是否可以在alembic迁移中检索元数据对象?

时间:2016-04-16 17:29:55

标签: python sqlalchemy migration alembic

我需要迁移架构&数据。我想按照下面的描述组织它。但是sqlalchemy.Table需要Metadata对象。是否可以从alembic中检索它?

metadata = op.get_metadata() # how i can do this?

table = sa.Table('my_table', metadata, sa.Column('id’,…), ...)

def upgrade():
    op.create_table(table)
    if context.get_x_argument(as_dictionary=True).get('data', None):
        data_upgrades()

def downgrade():
    if context.get_x_argument(as_dictionary=True).get('data', None):
        data_downgrades()
    op.drop_table(table)

def data_upgrades():
    op.bulk_insert(table, [ ... ])

def data_downgrades():
    table.delete()

1 个答案:

答案 0 :(得分:0)

我能够使用以下内容构建一个新的元数据对象:

 import alembic
 from sqlalchemy.schema import MetaData

 metadata = MetaData(bind=alembic.context.get_context().bind)

这应该有效。我不能100%确定是否真的需要绑定(取决于你的用例)。