aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/panels/sql/tracking.py
diff options
context:
space:
mode:
authorAymeric Augustin2013-11-16 23:48:39 +0100
committerAymeric Augustin2013-11-16 23:52:27 +0100
commitdbf0866c29e89619fb868e39e1a52ccb656ac7fd (patch)
tree518e34f8aed8f147d32da6c696b113287d0e26c0 /debug_toolbar/panels/sql/tracking.py
parent4c8f84620ed5385a515af33f943ee86c33712f8a (diff)
downloaddjango-debug-toolbar-dbf0866c29e89619fb868e39e1a52ccb656ac7fd.tar.bz2
Fix instrumentation of multiple database connections.
Python requires a function call to create a new scope; lambdas don't create closures! Fix #457.
Diffstat (limited to 'debug_toolbar/panels/sql/tracking.py')
-rw-r--r--debug_toolbar/panels/sql/tracking.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/debug_toolbar/panels/sql/tracking.py b/debug_toolbar/panels/sql/tracking.py
index 283e410..989ce3d 100644
--- a/debug_toolbar/panels/sql/tracking.py
+++ b/debug_toolbar/panels/sql/tracking.py
@@ -37,8 +37,21 @@ state = ThreadLocalState()
recording = state.recording # export function
-def CursorWrapper(*args, **kwds): # behave like a class
- return state.Wrapper(*args, **kwds)
+def wrap_cursor(connection, panel):
+ if not hasattr(connection, '_djdt_cursor'):
+ connection._djdt_cursor = connection.cursor
+
+ def cursor():
+ return state.Wrapper(connection._djdt_cursor(), connection, panel)
+
+ connection.cursor = cursor
+ return cursor
+
+
+def unwrap_cursor(connection):
+ if hasattr(connection, '_djdt_cursor'):
+ del connection._djdt_cursor
+ del connection.cursor
class ExceptionCursorWrapper(object):