SQLAlchemy& postgres反射:错误地反映所有模式

时间:2014-06-18 20:18:57

标签: postgresql sqlalchemy

我的反射配置如下:

meta = MetaData()
meta.reflect(bind=db.engine, schema='web')

Base = automap_base(metadata=meta)
Base.prepare()

我认为schema关键字会限制对指定模式的反射,但运行应用程序我看到它反映了所有模式中的表,这导致了一些冲突,因为我有相同名称的表不同的模式。因此,Base.classes将包含错误的类,因为它使用了错误的模式。

我有什么选择?

1 个答案:

答案 0 :(得分:0)

您可以使用MetaData.reflect关键字限制only中反映的表格。

meta.reflect(bind=db.engine, schema='web', only=tables)

如果您未提前知道特定架构中的表格,可以使用Inspector对象来获取它们。

insp = reflection.Inspector.from_engine(db.engine)
tables = insp.get_table_names(schema='web')