背景:Airflow 使用 Alembic 将迁移应用到用于存储 DAG/任务元数据的数据库。我想在此数据库中存储一些其他数据,并希望通过 Alembic 迁移跟踪我的架构更改。可以假设我的迁移将仅限于创建/修改新表,而不更改 Airflow 创建和使用的任何表。
存在两组迁移(一组在 Airflow 源代码中,一组在我的应用程序代码中)这一事实会导致任何问题吗?
即使您使用相同的数据库服务器,我建议对应用程序使用不同的模式/数据库。 这样,当您在运行迁移的
env.py
中传递连接字符串时,它将使用不同的 alembic_version
表,因此它们不会发生冲突。
如果您无法拥有单独的架构,您可以在应用程序代码的 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]