单一架构Postgres Alembic自动生成迁移

时间:2020-08-06 13:43:31

标签: python postgresql sqlalchemy alembic

我有一台Postgres服务器,其中有一个数据库。这个数据库是我们的数据仓库。在该数据库中,每个软件应用程序都有一个架构。

我正在开发一个新项目,该项目正在使用sqlalchemy的Alembic创建模式迁移。但是,由于我的数据库的设置方式...看来,修订生成器的--autogenerate选项正在扫描数据库中的所有架构。

我找不到将检查限制为仅一个模式的选项。我发现的唯一选择是创建一个函数以传递给alembic上下文中的inclue_object参数。因此,Alembic将扫描所有模式,但仅在该函数返回true时才使用模式/表。这不理想,因为我有数百张表...因此此过程很慢。

def include_object(object, name, type_, reflected, compare_to):
    print(object, name, type_, reflected, compare_to)
    if type_ == 'table' and object.schema != 'leads_manager':
        print('returning false')
        return False
    else:
        print('returning true')
        return True

def run_migrations_offline():
    url = get_db_uri()
    context.configure(
        url=url,
        target_metadata=target_metadata,
        include_object=include_object,
    )

    with context.begin_transaction():
        context.execute('SET search_path TO leads_manager')
        context.run_migrations()

任何人都知道如何将Alembic自动生成限制为在postgres中仅一个模式吗?

1 个答案:

答案 0 :(得分:0)

我最终创建了一个仅能访问我感兴趣的模式的用户。 Alembic --autogenerate然后仅检查该模式,因为它无法访问任何其他模式。

相关问题