aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cramer2011-03-30 15:31:27 -0700
committerDavid Cramer2011-03-30 15:31:27 -0700
commit48c8d0dd09c352532326b83a39800be047686356 (patch)
tree20c336d75404ff1f2c181fcc73748dc41cb784e2
parent00cba9b0a3dabf3d763e6a356e9661f99e16c45e (diff)
downloaddjango-debug-toolbar-48c8d0dd09c352532326b83a39800be047686356.tar.bz2
Ensure we wrap all cursors
-rw-r--r--debug_toolbar/panels/sql.py35
-rw-r--r--example/example.dbbin55296 -> 55296 bytes
2 files changed, 34 insertions, 1 deletions
diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py
index b3b44da..ba40c34 100644
--- a/debug_toolbar/panels/sql.py
+++ b/debug_toolbar/panels/sql.py
@@ -13,7 +13,7 @@ except ImportError:
# Compat with < Django 1.2
from django.db import connection
connections = {'default': connection}
-from django.db.backends import util
+from django.db.backends import util, BaseDatabaseWrapper
from django.views.debug import linebreak_iter
from django.template import Node
from django.template.defaultfilters import escape
@@ -148,6 +148,39 @@ def inject_sql_tracker(cls):
cls.execute = execute
+class CursorWrapper(object):
+ def __init__(self, cursor, db):
+ self.cursor = cursor
+ self.db = db # Instance of a BaseDatabaseWrapper subclass
+
+ def execute(self, sql, params=None):
+ return self.cursor.execute(sql, params)
+
+ def executemany(self, sql, param_list):
+ return self.cursor.executemany(sql, param_list)
+
+ def __getattr__(self, attr):
+ if attr in self.__dict__:
+ return self.__dict__[attr]
+ else:
+ return getattr(self.cursor, attr)
+
+ def __iter__(self):
+ return iter(self.cursor)
+
+if not hasattr(util, 'CursorWrapper'):
+ # Inject our CursorWrapper class
+ util.CursorWrapper = CursorWrapper
+
+def cursor(self):
+ from django.conf import settings
+ cursor = self._cursor()
+ if settings.DEBUG:
+ return self.make_debug_cursor(cursor)
+ return util.CursorWrapper(cursor, self)
+
+BaseDatabaseWrapper.cursor = cursor
+
inject_sql_tracker(util.CursorWrapper)
inject_sql_tracker(util.CursorDebugWrapper)
diff --git a/example/example.db b/example/example.db
index f78b987..3ca0f39 100644
--- a/example/example.db
+++ b/example/example.db
Binary files differ