首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用SQLAlchemy时关闭MySQL查询缓存?

问如何在使用SQLAlchemy时关闭MySQL查询缓存?
EN

Stack Overflow用户
提问于 2013-01-17 13:32:58
回答 1查看 1.5K关注 0票数 6

我正在通过SQLAlchemy库使用一个相当大的MySQL数据库,我想关闭MySQL的查询缓存,以便在每个会话的基础上调试性能问题。当重复慢查询会导致更快的执行时,很难调试慢查询。使用CLI MySQL客户端,我可以执行SET SESSION query_cache_type = OFF;来实现我想要的结果,并且我希望在每个SQLAlchemy会话上运行它(当我调试时)。

但是我不知道如何配置SQLAlchemy,让它在实例化一个新的数据库会话时运行SET SESSION query_cache_type = OFF。

我已经查看了Engine and Connection docs,但似乎什么也找不到。

有没有什么明显的我遗漏的东西,或者有更好的方法来做这件事?

EN

回答 1

Stack Overflow用户

发布于 2013-01-17 13:59:18

定义引擎后立即使用event hook:

代码语言:javascript
复制
from sqlalchemy import event

def disable_query_cache(conn, record):
    conn.cursor().execute("SET SESSION query_cache_type = OFF")


# this is probably in your Pyramid setup code
engine = create_engine(...)

if DEBUGGING:
    event.listen(engine, 'connect', disable_query_cache)

您可以通过将钩子添加到Pool类本身来全局执行此操作,但是(a)您可能无论如何都希望金字塔设置可用,以便您可以决定是否添加钩子,以及(b)全局状态不好:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14372760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档