代码之家  ›  专栏  ›  技术社区  ›  gmds

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

  •  0
  • gmds  · 技术社区  · 2 年前

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

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

    0 回复  |  直到 2 年前
        1
  •  1
  •   marrison    1 年前

    如果你不能有一个单独的模式,你可以在应用程序代码的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 version table in a separate schemas

        2
  •  0
  •   AlexD    2 年前

    即使您使用相同的DB服务器,我建议为应用程序使用不同的模式/数据库。 这样,当您在 env.py 运行迁移时,它将使用不同的 alembic_version 桌子,因此它们不会碰撞。