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

时间:2017-12-20 03:49:39

标签: python django postgresql datatable django-queryset

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

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

我使用Django == 1.11.7

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分: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>

这也允许您查看已执行了多少查询