首先介绍一下flask-migrate中三个常用命令
python manage.py db init
:初始化文件,第一次执行即可python manage.py db migrate
:将模型生成迁移文件,只要模型更改了,就需要执行一遍这个命令。python manage.py db upgrade
:将迁移文件真正的映射到数据库中。每次运行了migrate
命令后,就记得要运行这个命令。
报错情况:执行init时无报错,生成了migrations文件夹,但是执行migrate时最后在终端出现INFO [alembic.env] No changes in schema detected.代表没有生成对应版本的迁移文件。
原因分析:migrate命令是通过db.Model中的子类来创建对应的表,所以app必须要拿到model中的所有子类,否则无法创建迁移文件
解决方法:在app.py文件中导入模型文件的所有类即可,即
from apps.models.news_model import * from apps.models.user_model import *