细说flask数据库迁移

什么情况下要用数据库迁移?

  在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。
  更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。

  数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。

安装方法: pip  install  flask-migrate

from flask import Flask  # 导入flask包
from config import dict_config # 导入配置文件的类
from flask_script import Manager # 导入flask-script包
from flask_migrate import Migrate,MigrateCommand # 导入flask-migrate包
app = Flask(__name__)  # 实例化flask对象
app.config.from_object(dict_config['config']) # 配置文件封装了正式模式、测试模式等各种模式的类,以字典的方式存储,这是通过键值对的方式选择要用的模式的类
manage = Manager(app)  # manager实例化对象
migrate = Migrate(app,db) # 第一个参数是flask的实例,第二个参数是sqlalchemy数据库实例

manage.add_command('db',MigrateCommand) # manager是flask—script的实例,这条语句在flask-script中添加一个db命令

if __name__ == '__main__':
manage.run() # flask-script可以通过manager对象启动服务
# app.run()

数据库迁移命令:
在terminal命令窗口下执行:
1、 python database.py db init # 这个命令会创建migration文件夹,所有迁移文件都放在里面
2、
python database.py db migrate -m 'initial migration' # 创建迁移脚本,-m后面跟的是此次数据库迁移的备注
3、 python database.py db upgrade # 更新数据库
数据库更新成功后,在数据库中自动创建一个名为‘alembic_version‘的版本表,此时数据库迁移成功


返回以前的版本:
可以根据history命令找到版本号,然后传给downgrade命令
  python database.py db history
输出格式:<base> ->  版本号 (head), initial migration

回滚到指定版本:
python database.py db downgrade 版本号
 


 
原文地址:https://www.cnblogs.com/lutt/p/10452629.html