在使用Flask,SQLAlchemy和Alembic的平台中,我们经常需要使用自己的一组资源(包括数据库)创建新的单独实例。
在创建新实例时,SQLAlchemy的create_all
为我们提供了一个数据库,其中包含创建实例时的所有更新,但这意味着此新实例没有迁移历史记录旧实例有。它没有指向最新迁移的Alembic修订表。
因此,当需要更新旧实例(具有迁移历史记录)和没有迁移历史记录的较新实例时,我们必须为新实例提供一组自定义修订(忽略比数据库本身更旧的迁移)或创建虚假迁移历史记录并使用全局迁移集。有几次发生这种情况,我们已经做了后者。
是否进行根迁移,设置整个数据库,就像第一次迁移之前一样,然后运行所有迁移而不是create_all,这是引导新实例数据库的更好选择?
我担心迁移的数量会增加。
是否还有其他选择?
答案 0 :(得分:1)
如果你知道数据库的状态,你可以标记你在实例中创建时的修订版。
以下是命令行中的文档:
stamp 'stamp' the revision table with the given revision;
don't run any migrations.