1

SQLAlchemy(声明式系统)是否有一个简单的解决方案,可以模拟Base.metadata.create_all(engine)表的工作方式来构建必要的数据库模式?我的解决方案是下面的功能,但我想知道是否有更简单/内置的东西?我想还有更好的方法来获取模式名称,而不是像我一样从表名中获取它们。

def create_schemas(engine):
    table_names = Base.metadata.tables.keys()
    all_schemas = set([t.split('.')[0] for t in table_names if len(t.split('.')) > 1])
    inspector = reflection.Inspector.from_engine(engine)
    existing_schemas = inspector.get_schema_names()
    for s in all_schemas:
        if not s in existing_schemas: engine.execute(CreateSchema(s))  
4

0 回答 0