目前我有这个输出:
from django.db import connection
print connection.queries
输出: [{' time':' 0.000',...
我想输出如下: [{' time':' 0.000000',...
有可能吗?如果有,怎么样?如果不是为什么不呢? 我的大多数SQL查询都在0.000时间范围内执行。基本上我想实现这个功能,这样当我在settings.py中设置我的DEBUG True并进行必要的更改时,我希望能够在我的日志中看到小时间分数的SQL执行时间。
答案 0 :(得分:4)
这由位于django.db.backends.utils中的CursorDebugWrapper类填充。这也是查询时间缩短的地方。
'time': "%.3f" % duration,
如果你想要更多的数字,你需要创建自己的CursorDebugWrapper并monkeypatch BaseDatabaseWrapper它在哪里启动或创建你自己的数据库后端。
def make_debug_cursor(self, cursor):
"""
Creates a cursor that logs all queries in self.queries_log.
"""
return utils.CursorDebugWrapper(cursor, self)
答案 1 :(得分:0)
如果您使用的是this之类的设置,则可以使用格式化程序,例如
OxyPlot.Core
您可以增加.8f以获得更高的精度。上面会产生类似以下的内容
LOGGING = {
'version': 1,
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
'handlers': ['console']
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'my_time'
}
},
'formatters': {
'my_time': {
'format': 'Time: {duration:.8f} s\nSQL: {sql}\nArgs: {params}',
'style': '{'
}
}
}