【问题标题】:SQLAlchemy & postgres reflection: erroneously reflecting all schemasSQLAlchemy & postgres 反射:错误地反映所有模式
【发布时间】:2014-06-18 20:18:57
【问题描述】:
我的反射配置如下:
meta = MetaData()
meta.reflect(bind=db.engine, schema='web')
Base = automap_base(metadata=meta)
Base.prepare()
我认为schema 关键字会将反射限制为指定架构,但运行应用程序我发现它无论如何都会反映所有架构中的表,这会导致一些冲突,因为我在不同架构中有同名的表.所以Base.classes 将包含错误的类,因为它使用了错误的架构。
我有什么选择?
【问题讨论】:
标签:
postgresql
sqlalchemy
【解决方案1】:
您可以使用only 关键字限制MetaData.reflect 中反映的表。
meta.reflect(bind=db.engine, schema='web', only=tables)
如果您事先不知道特定架构中的表,可以使用Inspector 对象来获取它们。
insp = reflection.Inspector.from_engine(db.engine)
tables = insp.get_table_names(schema='web')