使用 flask-migrate 迁移数据库时,无法迁移注释


#1

数据库模型类是以
password_hash = db.Column(db.String(128), nullable=False, comment='用户密码使用hash加密后存储') 这种方式添加的注释

使用 db.create_all() 构建数据库,可以把注释一起构建,但是使用 flask-migrate 迁移构建时无法构建注释,目前所有的包都升级到了最新版。


#2

去看了下 sqlalchemy.schema. Column 文档:https://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Column

似乎无解。只知道要给数据库设置默认值是使用server_default而不是default参数。:upside_down_face:

Column('x', Text, server_default="val")

x TEXT DEFAULT 'val'

要不就手动给数据库迁移代码加comment:rofl:


#3

去看了 flask-migrate依赖的alembic迁移工具文档,简单来说这个问题无解,只能手动编辑。因为alembic的自动生成迁移代码并不会检测注释。只会检测:

  • 数据表(Table)增加与移除
  • 字段(Column)增加与移除
  • 字段是否可设为null(nullable=False
  • 索引(index=True)或字段是否唯一(unique=True)(v0.6.1新增)
  • 外键检测(v0.7.1新增)

文档:https://alembic.sqlalchemy.org/en/latest/autogenerate.html#what-does-autogenerate-detect-and-what-does-it-not-detect