Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在使用SQLAlchemy时关闭MySQL查询缓存?_Python_Mysql_Sqlalchemy_Pyramid - Fatal编程技术网

Python 如何在使用SQLAlchemy时关闭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

我正在通过SQLAlchemy库处理一个相当大的MySQL数据库,我想关闭MySQL的查询缓存,以便在每个会话的基础上调试性能问题。当重复执行缓慢的查询时,很难调试这些查询,从而导致执行速度大大加快。使用CLI MySQL客户端,我可以执行
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)全局状态不好:)

可能很有用