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