- Flask-Migrate用作对数据的迁移,类似Django里面的python manage.py migrate,每次我们如果需要对数据库的模型进行修改时,因为db.create_all()方法不会自动映射到数据库中,必须先删除表然后再重新执行命令才会重新映射,在实际开发中我们不可能将非空数据库直接删除然后重建,这不符合需求,所以就出现了Flask-Migrate,实现即时数据迁移
安装
pip install Flask-Migrate
使用
- 一般Flask-Migrate在manager中执行调用,详情参加前文
- 三步骤:
- 绑定app和db
- 添加命令,MigrateCommand中集合了所有与数据库相关的命令
- 执行
from flask_script import Manager
from app import app
from flask_migrate import Migrate, MigrateCommand
from exts import db
from models import Article
manager = Manager(app)
#绑定app和db
migrate = Migrate(app, db)
#添加MigrateCommand命令
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
执行
在执行过程中我也踩了不少坑,这里着重要提的就是第一次执行,这里的表得是最新的表,不然会抛出如下警告
image.png
- 三步骤:
1.生成迁移文件夹migrations,它会自动创建一系列初始化文件(仅首次需要执行)
python manage.py db init
image.png
- 将模型生成为迁移文件
python manage.py db migrate
image.png
- 映射表
python manage.py db upgrade
image.png
-
version里面记录的是一些版本信息
image.png
之后再有数据字段变化就可以更改字段后,执行后两步即可
- 注意:要映射到数据库中的模型一定要在manage.py中导入