SQLAlchemy,Alembic和新实例

时间:2016-02-07 23:32:28

标签: python sqlalchemy flask-sqlalchemy alembic

在使用Flask,SQLAlchemy和Alembic的平台中,我们经常需要使用自己的一组资源(包括数据库)创建新的单独实例。

在创建新实例时,SQLAlchemy的create_all为我们提供了一个数据库,其中包含创建实例时的所有更新,但这意味着此新实例没有迁移历史记录旧实例有。它没有指向最新迁移的Alembic修订表。

因此,当需要更新旧实例(具有迁移历史记录)和没有迁移历史记录的较新实例时,我们必须为新实例提供一组自定义修订(忽略比数据库本身更旧的迁移)或创建虚假迁移历史记录并使用全局迁移集。有几次发生这种情况,我们已经做了后者。

是否进行根迁移,设置整个数据库,就像第一次迁移之前一样,然后运行所有迁移而不是create_all,这是引导新实例数据库的更好选择?

我担心迁移的数量会增加。

是否还有其他选择?

1 个答案:

答案 0 :(得分:1)

如果你知道数据库的状态,你可以标记你在实例中创建时的修订版。

  1. 设置实例
  2. 运行create_all
  3. alembic heads(确定脚本dir中可用的最新版本)
  4. alembic stamp
  5. 以下是命令行中的文档:

    stamp 'stamp' the revision table with the given revision; don't run any migrations.