Django,有没有办法看到正在执行的SQL查询?

问题描述 投票:0回答:2

我正在探索https://github.com/shymonk/django-datatable,它看起来不错,但我想知道它是否会查询整个数据或查询分页数据。确定性能非常需要此信息。

我想知道在Django中,有没有办法看到正在执行的底层查询是什么?

我使用Django == 1.11.7

python django postgresql datatable django-queryset
2个回答
0
投票

如果要查看Django的ORM生成的实际SQL,可以打印出查询集的.query属性。这是一个名为home的应用程序和我在Django shell中生成的名为Question的模型的示例:

 $ python manage.py shell
(InteractiveConsole)
>>> from home.models import Question
>>> q = Question.objects.all()
>>> print(q.query)
SELECT "home_question"."id", "home_question"."date_added", "home_question"."question", "home_question"."number_of_answers" FROM "home_question"

看看django-datatable的方法,看起来过滤和分页视图基于过滤get_queryset的结果,返回model.objects.all()

def get_queryset(self):
    model = TableDataMap.get_model(self.token)
    if model is None:
        return None
    return model.objects.all()

0
投票

查看已执行的所有查询的另一种方法。

python manage.py shell
>> from django.db import connection
>> from app.models import SomeModel
>> obj = SomeModel.objects.first()
>> connection.queries
>> <Returns a list of all the queries that have been executed in the session upto this point>

这也允许您查看已执行的查询数

© www.soinside.com 2019 - 2024. All rights reserved.