Python 如何在使用SQLAlchemy时关闭MySQL查询缓存?
我正在通过SQLAlchemy库处理一个相当大的MySQL数据库,我想关闭MySQL的查询缓存,以便在每个会话的基础上调试性能问题。当重复执行缓慢的查询时,很难调试这些查询,从而导致执行速度大大加快。使用CLI MySQL客户端,我可以执行Python 如何在使用SQLAlchemy时关闭MySQL查询缓存?,python,mysql,sqlalchemy,pyramid,Python,Mysql,Sqlalchemy,Pyramid,我正在通过SQLAlchemy库处理一个相当大的MySQL数据库,我想关闭MySQL的查询缓存,以便在每个会话的基础上调试性能问题。当重复执行缓慢的查询时,很难调试这些查询,从而导致执行速度大大加快。使用CLI MySQL客户端,我可以执行SET SESSION query\u cache\u type=OFF以实现我想要的结果,我希望在每个SQLAlchemy会话上运行它(当我调试时) 但我不知道如何配置SQLAlchemy,使其在实例化新数据库会话时运行SET SESSION query\u
SET SESSION query\u cache\u type=OFF代码>以实现我想要的结果,我希望在每个SQLAlchemy会话上运行它(当我调试时)
但我不知道如何配置SQLAlchemy,使其在实例化新数据库会话时运行SET SESSION query\u cache\u type=OFF
我已经看过了,但似乎什么也没找到
是否有一些明显的地方我遗漏了,或者有更好的方法做到这一点?定义引擎后立即使用:
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)
您可以通过将钩子添加到池
类本身来全局执行此操作,但是(a)您可能希望金字塔设置仍然可用,以便您可以决定是否添加钩子,以及(b)全局状态不好:)可能很有用