迁移
-
封装随着时间的推移对我们的数据库模式所做的一组更改。
-
被唯一命名
-
通常作为 本地文件 存储 在我们的项目仓库中,例如
migrations/
文件夹 -
对我们的数据库所做的更改与 migrations/ 文件夹中存在的迁移文件之间应该存在 1-1 映射。
-
迁移文件为数据库设置了表。
-
对数据库所做的所有更改都应该作为我们存储库中迁移文件的一部分物理存在。
迁移命令行脚本
一般需要3个脚本,对于
- migrate :创建迁移脚本模板填写;根据要进行的更改生成迁移文件
- upgrade :应用尚未应用的迁移(“升级”我们的数据库)
- rollback :回滚有问题的应用迁移(“降级”我们的数据库)
Flask + SQLAlchemy 的迁移库
- Flask-Migrate 是我们使用 SQLAlchemy 迁移更改的库。 它在引擎下使用了一个名为 Alembic 的库。
Flask-Migrate & Flask-脚本
-
Flask-Migrate :迁移管理器,用于迁移基于 SQLALchemy 的数据库更改
-
Flask-Script :从终端运行我们定义的迁移脚本
进行迁移的步骤
- 初始化用于存储迁移的迁移存储库结构
- 创建迁移脚本(使用 Flask-Migrate)
- (手动)运行迁移脚本(使用 Flask-Script)
资源
迁移migration步骤:
- from flask_migrate import Migrate
- migrate = Migrate(app,db)
- 保存之后终端运行命令:flask db init 生成migration文件夹
- 去掉create_all()语句
- 修改数据库/数据表
- 运行命令行:flask db migrate
- 之后 自动在migration/version文件夹下生成哈希码为名字的文件
- 打开看看,选择合适的版本, flask db upgrade 或 flask db downgrade
总结
设置和运行迁移的总体步骤
- 数据库迁移命令 :migrate = Migrate(app,db),链接到 Flask 应用程序模型和数据库,链接到用于运行迁移的命令行脚本,设置文件夹以存储迁移(作为数据库的版本)
- 运行初始迁移为 SQLAlchemy 模型创建表 ,记录初始模式:flask db init ,替换使用 db.create_all()
- 迁移对我们的数据模型的更改
- 更改 SQLAlchemy 模型
- 运行 flask db migrate 以允许 Flask-Migrate 根据更改自动生成迁移脚本
- 微调迁移脚本:migration/version文件夹下生成哈希码为名字的脚本
- 运行迁移,也就是通过“upgrade”“downgrade”改变数据库