【发布时间】:2019-12-18 21:14:15
【问题描述】:
我使用 Django 1.8.17(我知道它不再那么年轻了)。 我在 PostGres 上记录了慢速请求超过一分钟。
我很难找到日志中列出的 SQL 查询所属的查询集。
是否有一个标识符可以添加到查询集中以在日志中查找关联的 SQL 查询或轻松识别它的技巧?
这是一个几乎无法识别的常见查询集示例,因为我有几个相似的查询集。
Queryset:
Video.objects.filter(status='online').order_by('created')
LOGs:
duration: 1056.540 ms statement: SELECT "video"."id", "video"."title",
"video"."description", "video"."duration", "video"."html_description",
"video"."niche_id", "video"."owner_id", "video"."views",
"video"."rating" FROM "video" WHERE "video"."status" = 'online'
ORDER BY "video"."created"
Desired LOGs:
duration: 1056.540 ms statement: SELECT "video"."id", "video"."title",
"video"."description", "video"."duration", "video"."html_description",
"video"."niche_id", "video"."owner_id", "video"."views",
"video"."rating" FROM "video" WHERE "video"."status" = 'online'
ORDER BY "video"."created" (ID=555)
【问题讨论】:
-
不确定我是否理解,上面的示例显示了属于日志的查询集。 “识别查询集”是什么意思?
-
我知道情况正好相反,但是如果您为所有可疑查询集打印查询集的
query(例如作为调试日志记录),您应该能够匹配它们。跨度> -
@dirkgroten 这是一个例子。事实上,我不知道它是哪个 Queryset。我只是展示了基本的查询集是多么的难以与 SQL LOG 关联
-
@dirkgroten。打印查询即将在很多查询集上打印。在每个之后添加打印,然后将其删除,这是一项艰巨的任务。我想知道它通常是如何制作的。如果我没有找到任何参数来实现我的目标,我会以这个结束,但我想肯定有人在我之前考虑过这个。
-
在开发中,您可以使用 Django-debug-toolbar,它会显示您的所有 SQL 查询以及触发它的代码行。
标签: sql django postgresql logging django-queryset