我有一个型号不多的烧瓶应用程序。 User
模型如下...
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(128), index=True, unique=True)
password_hash = db.Column(db.String(128))
first_name = db.Column(db.String(32))
last_name = db.Column(db.String(32))
bio = db.Column(db.String(255))
patterns = db.relationship('Pattern', backref='user', lazy='dynamic')
现在,我想向模型添加一个新的布尔列。我正在使用MySQL作为数据库。我尝试了以下方法...
invited = db.Column(db.Boolean, default=0)
但是当我flask db migrate
失败时,我得到以下信息...
INFO [alembic.runtime.migration] Context impl MySQLImpl.
我也尝试过
from sqlalchemy import BOOLEAN # also with Boolean
...
invited = db.Column(BOOLEAN, default=0) # also with Boolean
但得到相同的错误。阅读MySQL文档后发现MySQL没有布尔类型而是TINYINT
。但是阅读此Github线程后,我了解到布尔类将根据方言变成TINYINT
。所以我做了以下...
from sqlalchemy.dialect.mysql import BOOLEAN
,当flask run migrate
时仍然出现相同的错误。似乎Alembic无法看到模型中的更改。
是否可以使用mysql
和flask-migrate
在flask-sqlalchemy
中创建布尔字段?
答案 0 :(得分:0)
尝试以下操作,我假设Flask迁移无法识别db.Column(BOOLEAN, default=0)
。
a_boolean_field = db.Column(db.Boolean(), default=False)
我刚刚对其进行了测试,并且经过以上测试,Flask-Migrate能够检测到它。
答案 1 :(得分:0)
你可以这样做
from sqlalchemy import Boolean, Column
invited = Column(Boolean, nullable=False, default=False)
这应该适用于 MySQL。