When running the Django development server, this middleware causes all executed SQL queries to get printed out to the console.
This is based on Snippet 161. The big difference is that 161 logs by adding stuff to your response text, which isn't very convenient IMO.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from django.db import connection
from django.template import Template, Context
from django.conf import settings
#
# Log all SQL statements direct to the console (when running in DEBUG)
# Intended for use with the django development server.
#
class SQLLogToConsoleMiddleware:
def process_response(self, request, response):
if settings.DEBUG and connection.queries:
time = sum([float(q['time']) for q in connection.queries])
t = Template("{{count}} quer{{count|pluralize:\"y,ies\"}} in {{time}} seconds:\n\n{% for sql in sqllog %}[{{forloop.counter}}] {{sql.time}}s: {{sql.sql|safe}}{% if not forloop.last %}\n\n{% endif %}{% endfor %}")
print t.render(Context({'sqllog':connection.queries,'count':len(connection.queries),'time':time}))
return response
|
More like this
- Browser-native date input field by kytta 1 month, 1 week ago
- Generate and render HTML Table by LLyaudet 1 month, 2 weeks ago
- My firs Snippets by GutemaG 1 month, 3 weeks ago
- FileField having auto upload_to path by junaidmgithub 3 months ago
- LazyPrimaryKeyRelatedField by LLyaudet 3 months, 1 week ago
Comments
Please login first before commenting.