Python 创建alembic迁移以创建版本\u表\u架构的架构

Python 创建alembic迁移以创建版本\u表\u架构的架构,python,sqlalchemy,database-schema,alembic,Python,Sqlalchemy,Database Schema,Alembic,我想使用alembic在名为foo的单个PostgreSQL模式范围内管理我的数据库。 对于新环境的自动部署,我希望alembic创建模式: op.execute("create schema foo") 我还想使用env.py中的version\u table\u schema='foo'将alembic\u version表放在这个模式中。 然而,我遇到了一个第22条军规的情况,因为模式还没有创建,alembic无法检查它的版本 在没有人工干预的情况下,是否无法使用version\u ta

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

op.execute("create schema foo")
我还想使用
env.py
中的
version\u table\u schema='foo'
将alembic\u version表放在这个模式中。 然而,我遇到了一个第22条军规的情况,因为模式还没有创建,alembic无法检查它的版本


在没有人工干预的情况下,是否无法使用
version\u table\u schema
kwarg?我是否需要一个单独的
env.py
和versions文件夹来创建模式

您可以在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脚本,我需要在运行脚本之前手动确保模式存在。