1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from django.db import connection
from django.template import Template, Context
class SQLLogMiddleware:
def process_response ( self, request, response ):
time = 0.0
for q in connection.queries:
time += float(q['time'])
t = Template('''
<p><em>Total query count:</em> {{ count }}<br/>
<em>Total execution time:</em> {{ time }}</p>
<ul class="sqllog">
{% for sql in sqllog %}
<li>{{ sql.time }}: {{ sql.sql }}</li>
{% endfor %}
</ul>
''')
response.content = "%s%s" % ( response.content, t.render(Context({'sqllog':connection.queries,'count':len(connection.queries),'time':time})))
return response
|
More like this
- SQLLoggerMidleware + infobar by robvdl 5 years, 4 months ago
- SQL Log Middleware by joshua 6 years, 2 months ago
- DebugFooter middleware with textmate links by crucialfelix 4 years, 8 months ago
- DebugFooter middleware by simon 5 years ago
- DebugMiddleware footer with links to quick open file/line# in TextMate on local machine by felix_the_third 3 years, 4 months ago
Comments
Is there some trick or dependency to this? Returns 0 for me. 0 queries, 0 seconds.
#
If you see no queries:
You must set DEBUG=True in settings.py
#
I improved this snippet in Snippet 344.
It counts duplicated SQL queries.
#
Since Unicode branch I've changed code at bottom to:
#
more pythonic time calculation:
also this snippet doesn't work with JSON response content out of the box
#
I made a variation on this that logs to console, rather than appending SQL queries to the response. My snippet uses 'print' so it is only really useful when running
manage.py runserver.It is Snippet 1672.
#