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")