首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何查看Django ORM的查询集对应的SQL查询?

如何查看Django ORM的查询集对应的SQL查询?
EN

Stack Overflow用户
提问于 2009-06-09 18:15:40
回答 7查看 108.4K关注 0票数 177

有没有办法打印Django ORM生成的查询?

假设我执行以下语句:Model.objects.filter(name='test')

如何查看生成的SQL查询?

EN

回答 7

Stack Overflow用户

发布于 2012-07-07 17:05:24

您还可以使用python日志记录Django生成的所有查询。只需将此文件添加到您的设置文件中。

代码语言:javascript
复制
LOGGING = {
    'disable_existing_loggers': False,
    'version': 1,
    'handlers': {
        'console': {
            # logging handler that outputs log messages to terminal
            'class': 'logging.StreamHandler',
            'level': 'DEBUG', # message level to be written to console
        },
    },
    'loggers': {
        '': {
            # this sets root level logger to log debug and higher level
            # logs to console. All other loggers inherit settings from
            # root level logger.
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False, # this tells logger to send logging message
                                # to its parent (will send if set to True)
        },
        'django.db': {
            # django also has database level logging
            'level': 'DEBUG'
        },
    },
}

在应用程序生成html输出的情况下的另一种方法-可以使用django debug toolbar

票数 118
EN

Stack Overflow用户

发布于 2012-10-28 12:07:57

您可以将以下代码粘贴到您的shell上,它将显示所有SQL查询:

代码语言:javascript
复制
# To get all sql queries sent by Django from py shell
import logging
l = logging.getLogger('django.db.backends')
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())
票数 113
EN

Stack Overflow用户

发布于 2009-06-09 18:23:27

只要DEBUG处于打开状态:

代码语言:javascript
复制
from django.db import connection
print(connection.queries)

对于单个查询,您可以执行以下操作:

代码语言:javascript
复制
print(Model.objects.filter(name='test').query)
票数 76
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/971667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档