Ann*_*nna 2 python git sqlalchemy alembic flask-migrate
我正在使用Flask-Migrate(Alembic)管理SQLAlchemy数据库迁移。我正在两个具有不同迁移的不同分支。
我怎样才能更轻松?也许其他工具更像Django的迁移工具,但适用于Flask吗?
Alembic要求迁移链与当前迁移的数据库标记匹配。如果在分支上创建并运行某些迁移,然后切换到另一个分支,则该数据库将标记为正在不存在的迁移上。
要在使用迁移时在多个分支上工作,您需要确定要切换到的分支上最新的常见迁移是什么,然后首先降级到该版本。然后签出分支,并运行该分支唯一的迁移。
例如,假设您在“ dev”分支上创建了两个分支,分别称为“ feature1”和“ feature2”,并且自“ dev”以来每个都有一个新的迁移。要从“功能1”切换到“功能2”:
flask db downgrade -1。git checkout feature2flask db upgrade如果您不想由于降级而删除列或表而丢失数据,则需要转储并还原每个分支的数据库。
如果您正在使用“ feature1”并将其合并到“ dev”中,则需要更新“ feature2”,以便它了解已合并的新迁移。Alembic将支持拥有多个分支,只要存在所有迁移。合并“ feature2”后,您可以生成合并迁移,以将两个迁移分支合并回一个分支。
git checkout dev,git merge feature1git checkout feature2,git merge devflask db upgradegit checkout dev,git merge feature2flask db headsflask db merge id1 id2,替换上一步中的ID。flask db upgrade,flask db heads不幸的是,这是一个手动过程。Alembic需要迁移链来匹配数据库标记,而目前尚无解决方法。您也许可以编写一个git hook来帮助解决此问题,但这还不存在。