Django get query execution time(Django获取查询执行时间)
本文介绍了Django获取查询执行时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法在不使用django-debug-toolbar的情况下测量Django查询时间?它不是用来调试/记录的,我需要它像about # results (# seconds)
那样显示在网页上。
编辑:我需要在生产模式下使用此功能,因此DEBUG=True
不是选项
推荐答案
虽然django.db.connection.queries
会给出查询次数,但仅当DEBUG=True
时才起作用。为了将其用于一般用途,我们可以使用Database instrumentation [Django docs]并编写一个包装器来计时我们的查询。下面是直接来自上述文档的示例,我想说它似乎符合您的需求:
import time
class QueryLogger:
def __init__(self):
self.queries = []
def __call__(self, execute, sql, params, many, context):
current_query = {'sql': sql, 'params': params, 'many': many}
start = time.monotonic()
try:
result = execute(sql, params, many, context)
except Exception as e:
current_query['status'] = 'error'
current_query['exception'] = e
raise
else:
current_query['status'] = 'ok'
return result
finally:
duration = time.monotonic() - start
current_query['duration'] = duration
self.queries.append(current_query)
要使用它,您应该以这样的方式进行查询:
from django.db import connection
query_logger = QueryLogger()
with connection.execute_wrapper(query_logger):
# Make your queries here
for query in query_logger.queries:
print(query['sql'], query['duration'])
这篇关于Django获取查询执行时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Django获取查询执行时间


基础教程推荐
猜你喜欢
- 包装空间模型 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 求两个直方图的卷积 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01