Kev*_*ins 6 python mysql sqlalchemy pyramid
我正在通过SQLAlchemy库使用相当大的MySQL数据库,我很想关闭MySQL的查询缓存来调试每个会话的性能问题.调用慢速查询时很难调试它们,从而加快执行速度.使用CLI MySQL客户端,我可以执行SET SESSION query_cache_type = OFF;以实现我正在寻找的结果,并且我想在每个SQLAlchemy会话上运行它(当我正在调试时).
但我无法弄清楚如何配置SQLAlchemy,使其SET SESSION query_cache_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)
Run Code Online (Sandbox Code Playgroud)
您可以通过向Pool类本身添加钩子来全局执行此操作,但是(a)您可能希望金字塔设置仍然可用,以便您可以决定是否添加钩子,以及(b)全局状态是坏的:)
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |