清除sqlalchemy反射cach

2024-03-29 06:03:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用sqlalchemy的反射工具来获取一个Table对象。我这样做是因为这些表是动态的,表/列可以更改。下面是我使用的代码:

def getTableByReflection(self, tableName, metadata, engine):

    return Table(tableName, metadata, autoload = True, autoload_with = engine)

问题是,当上面的代码运行两次时,不管列是否已更改,它似乎都返回相同的结果。我尝试过使用mysession.refresh(mytable)刷新,但是失败了,因为表没有附加到任何元数据-这是有意义的,但为什么我看到缓存的结果?在

有什么方法可以告诉metadata/engine/session忘记这个表,让我干净地加载它吗?在


Tags: 工具对象代码selftruereturnsqlalchemydef
2条回答

传入新创建的新元数据实例。在

多亏了codeape的上述评论,我得以通过将语法更改为:

def getTableByReflection(self, tableName, metadata, engine):

    return Table(tableName, MetaData(), autoload = True, autoload_with = engine)

所以每次都要传入一个新的MetaData()实例。这可能会影响性能,但在我的应用程序的这一部分对我来说没问题。在

全部贷记到codeape

相关问题 更多 >