Flask项目中数据库迁移的使用
Flask项目中数据库迁移的使用
数据库迁移
- 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。
- 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。
- 在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。
- 为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。
首先要在虚拟环境中安装Flask-Migrate。
pip install flask-migrate
-
以下为实现数据库迁移的代码层面设置(未定义具体的数据库):
-
from flask import Flask # 导入flask from flask_sqlalchemy import SQLAlchemy # 导入SQLALchemy from flask_migrate import Migrate,MigrateCommand # 导入Migrate from flask_script import Manager # 导入终端命令 app = Flask(__name__) # 初始化Flask manager = Manager(app) # 创建终端命令对象 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/Flask_test' # 链接数据库 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True # 开启事件追踪 db = SQLAlchemy(app) # 初始化数据库对象 # 使用迁移类将应用和数据库连接对象保存, 第一个参数是Flask的实例,第二个参数是Sqlalchemy数据库实例 migrate = Migrate(app,db) # 将数据库的迁移命令添加到manager中 manager.add_command('db',MigrateCommand)
以下为终端命令层面操作数据库迁移
#这个命令会创建migrations文件夹,所有迁移文件都放在里面,初始化时设置 python database.py db init
# 创建迁移脚本(给迁移文件起备注名) -m 后面为备注名python database.py db migrate -m 'initial migration'
# 更新数据库python database.py db upgrade
# 查看以前的版本
python app.py db history
# 回滚到指定版本python app.py db downgrade 版本号
有不同简介欢迎交流
版权声明:本文为skaarl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。