用于将django sql查询打印到终端的上下文管理器

django-debug-queries的Python项目详细描述


这个包为django应用程序提供了一个简单的上下文管理器 将由代码块引起的sql查询输出到标准 输出。

(要抢先回答一个常见问题:django调试工具栏允许您查看 由对应用程序的http请求引起的查询,但我通常希望 跟踪管理命令或某些命令中使用的查询 除了在浏览器中发出请求之外的其他上下文;show_queries 此包中的上下文管理器在其他情况下有帮助。)

警告

请注意,调试将设置为true 整个街区(并恢复到之前 之后的值),因此不应在 例如,生产。

如果您安装了sqlparse,那么sql将很好地打印到 使它们更容易阅读,因此我建议您也这样做:

pip install sqlparse

示例

from django_debug_queries import show_queries

...

    with show_queries():
        people = list(Person.objects.filter(date_of_birth__gt="2000-01-01") \
            .values('id', 'legal_name'))
        sessions = list(ParliamentarySession.objects.all())

这可能会将以下内容输出到标准输出:

--===--
Number of queries: 2
  Query 0 (taking 0.003):
    SELECT "core_person"."id",
           "core_person"."legal_name"
    FROM "core_person"
    WHERE "core_person"."date_of_birth" > '2000-01-01'
    ORDER BY "core_person"."sort_name" ASC
  Query 1 (taking 0.005):
    SELECT "core_parliamentarysession"."id",
           "core_parliamentarysession"."created",
           "core_parliamentarysession"."updated",
           "core_parliamentarysession"."start_date",
           "core_parliamentarysession"."end_date",
           "core_parliamentarysession"."house_id",
           "core_parliamentarysession"."position_title_id",
           "core_parliamentarysession"."mapit_generation",
           "core_parliamentarysession"."name",
           "core_parliamentarysession"."slug"
    FROM "core_parliamentarysession"
    ORDER BY "core_parliamentarysession"."start_date" ASC
End of query output.

其他选项

长查询字符串可能需要很长时间才能使用sqlparse进行漂亮的打印, 所以在默认情况下,长度为2048个字符的sql是不格式化的; 您可以使用可选的^{tt2}调整该限制$ 参数,例如:

with show_queries(sqlparse_character_limit=8192):
    ...

如果在django应用程序中使用多个数据库,则可以 告诉它使用带有可选^{tt3}的特定数据库$ 参数,例如

with show_queries(db_alias='my_other_db'):
    ...

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
orm如何在Java中实现规范化映射?   java以编程方式修改Xtext生成的Mwe2工作流   java正在覆盖外部文件中的现有数据,如何停止?   java在ANTLR BNF语法符号中epsilon的等价物是什么?   java如何使用Hibernate@Anyrelated注释?   代码生成生成java类并在运行时加载它   java Maven无法在本地jar文件中收集依赖项   java NetBeans IDE 8.2不显示错误消息   java Selenium web驱动程序找不到元素   java如何修复“拒绝访问属性”invoke“”的权限?   JavaApacheJClouds,从比日期更早的blob中删除blob的最佳方法   java如何比较和排序树集中的项目?   使用JavaSpring和无头/解耦CMS   java使用swagercodegen在不同的类中生成端点   Java外部Keylistener没有响应