I know that it is possible to get all the SQL queries that were run for the current request/response when DEBUG is on by looking at connection.queries. The django-debug-toolbar also helps a lot on development.
The problem is that my production server is under high load and I would like to log the queries that are being executed for each view so I can optimize the pages that are creating more queries first.
Is it possible to do that without modifying my database driver?
In Django 1.3, I see class
BaseDatabaseWrapper
indjango/db/backends/__init__.py
has an attributeuse_debug_cursor
. This class is the wrapper for thedjango.db.connection
object that represents the default database connection (docs). Seems like setting this attribute to true would cause Django to use aCursorDebugWrapper
fromdjango/db/backends/util.py
, which logs all queries it executes, instead of aCursorWrapper
, which does not.use_debug_cursor
is not present in Django 1.2, which is what I have installed on this machine at the moment, so I can't test it right now. If I have a few minutes, I'll try to get a dummy 1.3 project started to test this out...I may well be in over my head here!use_debug_cursor
was renamed toforce_debug_cursor
in Django 1.8