无法使用flask-sqlalchemy和flask-migrate创建mysql布尔字段

d5vmydt9  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(394)

我有一个工作瓶应用程序与几个模型。这个 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线程,我知道boolean类将变成 TINYINT 基于方言。所以我做了以下。。。

from sqlalchemy.dialect.mysql import BOOLEAN

但我还是得到了同样的错误 flask run migrate . 似乎alembic看不到模型的变化。
有没有办法在中创建一个布尔字段 mysql 利用 flask-migrate 以及 flask-sqlalchemy ?

ioekq8ef

ioekq8ef1#

试试下面,我假设你没有认出 db.Column(BOOLEAN, default=0) .

a_boolean_field = db.Column(db.Boolean(), default=False)

我刚刚测试了它和上面的作品,我们能够检测到它。

相关问题