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