Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django+;原始Sql查询:请参阅get方法中Django ORM后面运行的原始Sql查询_Django_Django Models_Django Orm - Fatal编程技术网

Django+;原始Sql查询:请参阅get方法中Django ORM后面运行的原始Sql查询

Django+;原始Sql查询:请参阅get方法中Django ORM后面运行的原始Sql查询,django,django-models,django-orm,Django,Django Models,Django Orm,尝试查看在每个Django ORM后面运行的SQL查询 为此,我正在做: item = Item.objects.filter(Id=8177).query 在这里,我使用filter获取多个fetch。上面的查询为我提供了所需的输出 现在,当我尝试使用GETAPI时,问题开始了 item = Item.objects.get(Id=8177).query 它获取一条记录,然后尝试查看在Django ORM后面运行的原始SQL查询,然后显示如下: AttributeError:“项”对象没有

尝试查看在每个Django ORM后面运行的SQL查询

为此,我正在做:

item = Item.objects.filter(Id=8177).query
在这里,我使用filter获取多个fetch。上面的查询为我提供了所需的输出

现在,当我尝试使用GETAPI时,问题开始了

item = Item.objects.get(Id=8177).query
它获取一条记录,然后尝试查看在Django ORM后面运行的原始SQL查询,然后显示如下:

AttributeError:“项”对象没有属性“查询”


Django不支持查看GETAPI的原始SQL查询吗?可能是我错了。有人能分享一些想法吗?

在日志配置的
记录器部分添加一个名为
django.db
的记录器。将其级别设置为
DEBUG
,并将其处理程序设置为要使用的处理程序。如果您希望日志显示在测试服务器启动屏幕中,请使用处理程序
控制台
。确保您的Django应用程序正在调试模式下运行

配置示例:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'verbose': {
                'format': '[%(thread)d %(threadName)s %(process)d %(processName)s][%(asctime)s] %(levelname)s [%(name)s %(filename)s:%(lineno)s in %(funcName)s] %(message)s'
            }
        },
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',
                'formatter': 'verbose',
            }
        },
        'loggers': {
            'django.db': {
                'handlers': ['console'],
                'level': 'DEBUG',
                'propagate': False,
            }
        }
    }

如果不想配置日志记录,可以使用
django.db.connection.querys
检查数据库查询:

from django import db
from app.models import MyModel

MyModel.objects.get(id=1)
print db.connection.queries

>>> [{'sql': 'Your query here', 'time': '0.001'}]

顺便说一下,
get
方法使用
filter
和引擎盖下的
\u result\u cache
中的切片,并返回该切片。有时它也会将
order\u by
应用于queryset。因此,您几乎可以通过使用相同的参数检查
filter
方法的查询来预测SQL。

您考虑过配置SQL查询日志记录吗?是的。这是为响应配置的hanks。它对查询结果集有影响吗?没有,如果我理解的话。此列表只包含已执行的查询,就好像您要通过将str(query)附加到某个仲裁列表来存储它们一样。谢谢。明白了。真的很有帮助