我正在使用sqlalchemy的反射工具來獲取Table對象。我這樣做是因爲這些表是動態的,表/列可以更改。下面是我使用的代碼:清除sqlalchemy反射緩存
def getTableByReflection(self, tableName, metadata, engine):
return Table(tableName, metadata, autoload = True, autoload_with = engine)
的問題是,當上面的代碼運行兩次似乎返回相同的結果,無論列是否發生了變化。我嘗試使用mysession.refresh(mytable)
進行刷新,但由於表未附加到任何元數據而失敗 - 這很有道理,但爲什麼我會看到緩存的結果?
有什麼辦法告訴元數據/引擎/會話忘記這張表,讓我乾淨地加載它?
不附加到任何元數據?那麼你作爲'metadata'參數的值傳遞了什麼? – nkrkv 2010-06-18 10:15:26
我使用了我在其餘代碼中使用的相同元數據對象。錯誤是'類'sqlalchemy.schema.Table'沒有映射' - 我把它表示爲它是用元數據做的,但可能不是? –
OrganicPanda
2010-06-18 10:49:24
如果您傳入新創建的新元數據實例,該怎麼辦?那樣有用嗎? – codeape 2010-06-18 10:50:53