gpt4 book ai didi

python - sqlalchemy 查询持续时间记录

转载 作者:行者123 更新时间:2023-11-28 22:49:08 25 4
gpt4 key购买 nike

如果有人问过这个问题,我深表歉意,但我找不到我要找的东西。

我正在寻找最好的方法来记录从 sqlalchemy 到 syslog 的查询持续时间。

我读过这个:http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#configuring-logging我已经阅读了有关 sqlalchemy 信号的信息,但我不确定它们是否适合我正在尝试做的事情。 echo 和 echo_pool 标志似乎只是记录到标准输出?我也想要比他们提供的更多的信息。在我的完美世界中,对于每个查询,我可以获得查询字符串、查询持续时间,甚至 python 堆栈跟踪。

我们以几种不同的方式使用 sqlalchemy:我们使用 ORM,我们使用查询构建器,我们甚至使用传递给执行的文本查询。如果无论以哪种方式使用 sqlalchemy,都有一个信号会触发一个函数,那将是完美的。

我也在考虑在代码中找到它实际通过网络发送查询的位置,如果有人在那里有一些见解,那也很好。

我想得越多,就越觉得如果这很痛苦,可能不值得付出努力,但如果有人知道可以挽救局面的钩子(Hook),我想我会问问。作为记录,我将 Flask 与 Flask-Sqlalchemy 扩展一起使用。

如果这里有任何不清楚的地方,请告诉我。

谢谢!

最佳答案

Blask-Sqlalchemy在 Debug模式下(或否则设置选项时)已经记录有关每个查询的信息。你可以用 get_debug_queries() 得到它.

如果您使用 Flask-DebugToolbar ,它提供了一个叠加层,让您可以针对每个请求浏览此数据。

如果你想记录这个,你可以添加一个函数来在每个记录这​​个信息的请求之后触发。

@app.after_request
def record_queries(response):
for info in get_debug_queries():
# write to syslog here

return response

关于python - sqlalchemy 查询持续时间记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com