SQLAlchemy+;alembic:创建模式迁移

SQLAlchemy+;alembic:创建模式迁移,sqlalchemy,alembic,flask-migrate,Sqlalchemy,Alembic,Flask Migrate,我不知道如何定义创建模式foo迁移?我的模型如下所示(我正在使用Flask Migrate): 当我执行mange db upgrade时,由于模式“foo”不存在,我得到了一个失败。如何为使用SQLAlchemy和Alembic的架构添加迁移?我通过将迁移升级命令修改为首次运行来实现这一点: op.execute("create schema foo") 在降级功能中 op.execute("drop schema foo") 因此,整个迁移文件看起来像: from alembic imp

我不知道如何定义
创建模式foo
迁移?我的模型如下所示(我正在使用Flask Migrate):


当我执行
mange db upgrade
时,由于模式“foo”不存在,我得到了一个失败。如何为使用SQLAlchemy和Alembic的架构添加迁移?

我通过将迁移
升级
命令修改为首次运行来实现这一点:

op.execute("create schema foo")
降级功能中

op.execute("drop schema foo")
因此,整个迁移文件看起来像:

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '6c82c972c61e'
down_revision = '553260b3e828'
branch_labels = None
depends_on = None


def upgrade():
    op.execute("create schema foo")
    ...

def downgrade():
    ...
    op.execute("drop schema foo")

是否有某种方法可以通过
sqlalchemy.event
实现这一点?例如,
event.listen(Base.metadata,“创建前”,CreateSchema(“foo”))
。这可以解决迁移问题,但如果您进行了另一次迁移,它将不会再次检测到您的模式,并将生成所有表。。。这可能会很麻烦。有没有办法检测不同模式中的更改?@Pstr您可以在元数据类上指定模式属性
metadata=metadata(schema=)
Base=declarative_Base(schema=)
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '6c82c972c61e'
down_revision = '553260b3e828'
branch_labels = None
depends_on = None


def upgrade():
    op.execute("create schema foo")
    ...

def downgrade():
    ...
    op.execute("drop schema foo")