想必使用flask都遇到过数据迁移中列需要更改的问题,如修改列的类型或者修改列的长度等等
但是实际使用过程中直接执行db migrate命令会发现检测不到这些列被修改。
其实alembic支持检测字段长度or类型改变,不过它不是默认的,需要配置,
找到migrations/env.py文件,在run_migrations_online函数context.configure中加入如下内容:
compare_type=True, # 检查字段类型
compare_server_default=True, # 比较默认值
然后再去执行python xxxx.py db migrate命令,发现迁移成功并且找到列的变化
成功之后会生成新的db revison文件,文件中记录的就是之前修改过的字段的变化
最后再执行python xxxx.py db upgrade就实现字段的变更