写代码的时候遇到了一个问题就是我开始设计数据库models的时候代码写了一半我想在某个表单中新增加一个字段,这个时候就需要用到了数据迁移flask-migrate,flask_script。
1.代码中配置环境
这是我的manager.py程序的启动入口,需要使用flask_script命令的方式启动就在程序入口manager.run(),把app.run() 注释掉
from flask_script import Manager #flask 脚本 from flask_migrate import Migrate,MigrateCommand #flask 迁移数据 from app import create_app,db app = create_app() migrate = Migrate(app,db)#传入2个对象一个是flask的app对象,一个是SQLAlchemy manager = Manager(app) manager.add_command('db',MigrateCommand)#给manager添加一个db命令并且传入一个MigrateCommand的类 @manager.command def dev(): from livereload import Server live_server = Server(app.wsgi_app) live_server.watch('**/*.*') live_server.serve(open_url=True) if __name__ == '__main__': #app.run() manager.run() # dev()2.flask-migrate初始化
#执行命令 python manager.py db init会看到下面提示表示初始化成功,这时候你会看到你的项目多出一个migrations的文件夹
3.改动你的数据库把 我这新添加了一个tag字段
改动后输入命令
python manager.py db migrate -m "Initial migration"这时候输出的信息就有我们改动的字段,migrations\versions下会增加一个py的迁移脚本文件,检查表格以及字段。
3.更新数据库
更新数据库
python manager.py db upgrade然后你就会发现你的字段增加了而且数据库也不会报错
数据库回滚
# 获取 History ID python manager.py db history # 回滚到某个 history python manager.py db downgrade <history_id>