【问题标题】:Create an alembic migration to create schema for version_table_schema创建一个 alembic 迁移来为 version_table_schema 创建架构
【发布时间】:2020-05-29 01:09:55
【问题描述】:

我想使用 alembic 在名为 foo 的单个 PostgreSQL 架构范围内管理我的数据库。 对于新环境的自动部署,我希望 alembic 创建架构:

op.execute("create schema foo")

我还希望在此架构中使用 version_table_schema='foo' 为 context.configure 在 env.py 中使用 alembic_version 表。 但是,由于尚未创建架构并且 alembic 无法检查其所在的版本,因此我遇到了一些 catch 22 的情况。

有没有办法在没有人工干预的情况下使用version_table_schema kwarg?我需要有一个单独的env.py 和版本文件夹来创建架构吗?

【问题讨论】:

    标签: python sqlalchemy database-schema alembic


    【解决方案1】:

    您可以像这样在 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 revision update head --sql 生成 SQL 脚本,我需要在运行脚本之前手动确保架构存在。
    猜你喜欢
    • 2020-04-20
    • 2018-09-09
    • 2021-11-08
    • 2017-10-13
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2013-10-20
    相关资源
    最近更新 更多