python - sqlalchemy 查询持续时间日志记录

标签 python mysql sql sqlalchemy flask-sqlalchemy

如果已经有人问过这个问题,我深表歉意,但我找不到我想要的确切内容。

我正在寻找记录从 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 扩展。

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

谢谢!

最佳答案

Flask-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/

相关文章:

php - 使用 INNER JOIN 从表中检索最新的时间戳行

python - Pycharm:如何在遇到调试点时专注于编辑器

python - 无法在 wxPython 中将自定义 Sizer 作为父级添加到其子级小部件

mysql - OpenMeap - Mysql 数据库

mysql - 如何对此查询进行正确的内连接?

sql - 在数据透视表中按升序对月份进行排序

python - 有没有办法在 WagtailCMS 的 InlinePanel 中对相关的 Orderable 进行验证?

Python:如何在省略注释的同时从属性文件创建字典

mysql - 使用额外的空格来提高 MySQL 查询的可读性是否低效到不值得的地步?

MYSQL:从多个表返回计数