两组独立的 Alembic 迁移可以应用于同一个数据库吗?

问题描述 投票:0回答:2

背景:Airflow 使用 Alembic 将迁移应用到用于存储 DAG/任务元数据的数据库。我想在此数据库中存储一些其他数据,并希望通过 Alembic 迁移跟踪我的架构更改。可以假设我的迁移将仅限于创建/修改新表,而不更改 Airflow 创建和使用的任何表。

存在两组迁移(一组在 Airflow 源代码中,一组在我的应用程序代码中)这一事实会导致任何问题吗?

python sqlalchemy airflow alembic
2个回答
0
投票

即使您使用相同的数据库服务器,我建议对应用程序使用不同的模式/数据库。 这样,当您在运行迁移的

env.py
中传递连接字符串时,它将使用不同的
alembic_version
表,因此它们不会发生冲突。


0
投票

如果您无法拥有单独的架构,您可以在应用程序代码的 alembic/env.py 模块中的上下文配置期间设置“version_table”参数,为您的应用程序迁移提供单独的版本表

def run_migrations_online():
    
    # [snip]

    with connectable.connect() as connection:
        context.configure(
            connection=connection,
            target_metadata=target_metadata,
            version_table='alembic_version_application',
        )

    # [snip]

https://alembic.sqlalchemy.org/en/latest/api/runtime.html#alembic.runtime.environment.EnvironmentContext.configure.params.version_table

单独模式中的 Alembic 版本表

© www.soinside.com 2019 - 2024. All rights reserved.