2014-06-18 31 views
1

我已經配置我的倒影,像這樣:SQLAlchemy的和Postgres的反思:錯誤地反映所有模式

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

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

我以爲schema關鍵字會限制反射到指定的模式,但在運行應用程序,我看到它反映無論如何,所有模式中的表都會導致衝突,因爲我在不同的模式中使用同名表。所以Base.classes將包含錯誤的類,因爲它使用了錯誤的模式。

我在這裏有什麼選擇?

回答

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