flask-migrate的作用
从名称migrate就可以理解,主要是数据迁移方面的作用。在flask数据库操作一般引用SQLAlchemy
,表初始化的方式一般采用的是db.create_all
,这种方式需要对表修改的时候就需要先去数据库中删除该表再才能重新生成新的表结构的表,这样明显是不符合我们的需求的,使用flask-migrate
就可以解决这个问题。
安装flask-migrate
pip install flask-migrate复制代码
引入flask-migrate示例代码
from flask_script import Managerfrom app.app import appfrom flask_migrate import Migrate, MigrateCommandfrom app.exts.db import db# 这个引用需要注意,你要生成的表需要在这里引入才会生成,否则不会自动生成from models.models import Usermanager = Manager(app)migrate = Migrate(app, db)manager.add_command('db', MigrateCommand)if __name__ == '__main__': manager.run()复制代码
表的初始化和变更
第一次数据库初始化过程需要三个步骤建立模型 -> 创建迁移文件 -> 创建表
,分别对应三个命令init
、migrate
、upgrade
。以后表的增删改只需要执行后两个步骤即可。可以注意执行每一步对应的变化,init
后当前目录下会增加文件夹migrations
,但是该文件夹下的versions
文件夹应该是空的;执行migrate
命令后versions
文件夹下会增加内容;upgrade
执行完后表将全部创建完毕。具体执行代码如下:
# 建立模型python manage db init# 迁移文件python manage db migrate# 表python manage db upgrade复制代码