如何计时Django查询

时间:2010-12-09 17:27:30

标签: django timeit

我一直使用Python的timeit库为我的小Python程序计时。 现在我正在开发一个Django应用程序,我想知道如何计算我的Django函数,尤其是查询。

例如,我的views.py中有一个def index(request),当我加载索引页面时会有很多东西。 如何在不改变现有功能的情况下使用timeit计时这个特定功能?

4 个答案:

答案 0 :(得分:16)

如果您的django项目处于调试状态,您可以使用以下命令查看数据库查询(和时间):

>>> from django.db import connection
>>> connection.queries

我知道这不会满足您对个人资料的需求,但希望它有助于查询部分!

答案 1 :(得分:5)

debug toolbar是你想要的,它可以帮助你计算每个查询的时间。

或者这个片段也可以。

http://djangosnippets.org/snippets/93/

答案 2 :(得分:1)

获取最佳方法是使用Debug Toolbar,您还将获得一些用于查询优化的附加功能,这些功能将帮助您优化数据库查询。

这是另一种解决方案,您可以使用connect.queries。这将返回在reset_queries()命令之前执行的命令的SQL命令。您可以使用reset_queries()在获得上一个查询的时间后重置reset_queries。并非强制使用>>> from django.db import connection, reset_queries >>> from appname.models import Device >>> devices = Device.objects.all() >>> connection.queries >>> reset_queries()

假设您有一个名为设备的模型。您可以像这样测量查询时间:

{{1}}

答案 3 :(得分:-2)

您还可以使用命令行Django shell。

%time SomeModel.objects.count()

它显示Wall time的毫秒数。 除了SomeModel外,没有其他内容。