创建 alembic 迁移以为 version_table_schema 创建架构
Create an alembic migration to create schema for version_table_schema
我想使用 alembic 在名为 foo
的单个 PostgreSQL 模式范围内管理我的数据库。
对于新环境的自动部署,我希望 alembic 创建架构:
op.execute("create schema foo")
我还想在此架构中使用 version_table_schema='foo'
用于 env.py
中的 context.configure
alembic_version table。
然而,我 运行 陷入了一个 catch 22 的境地,因为模式尚未创建并且 alembic 无法检查它的版本。
有没有办法在没有人工干预的情况下使用 version_table_schema
kwarg?我是否需要单独的 env.py
和版本文件夹来创建架构?
您可以像这样在 env.py 中创建架构:
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata,
include_schemas=True,
version_table_schema='foo'
)
connection.execute('CREATE SCHEMA IF NOT EXISTS foo')
with context.begin_transaction():
context.run_migrations()
我想使用 alembic 在名为 foo
的单个 PostgreSQL 模式范围内管理我的数据库。
对于新环境的自动部署,我希望 alembic 创建架构:
op.execute("create schema foo")
我还想在此架构中使用 version_table_schema='foo'
用于 env.py
中的 context.configure
alembic_version table。
然而,我 运行 陷入了一个 catch 22 的境地,因为模式尚未创建并且 alembic 无法检查它的版本。
有没有办法在没有人工干预的情况下使用 version_table_schema
kwarg?我是否需要单独的 env.py
和版本文件夹来创建架构?
您可以像这样在 env.py 中创建架构:
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata,
include_schemas=True,
version_table_schema='foo'
)
connection.execute('CREATE SCHEMA IF NOT EXISTS foo')
with context.begin_transaction():
context.run_migrations()