我正在使用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