aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/utils/tracking/db.py
diff options
context:
space:
mode:
Diffstat (limited to 'debug_toolbar/utils/tracking/db.py')
-rw-r--r--debug_toolbar/utils/tracking/db.py24
1 files changed, 19 insertions, 5 deletions
diff --git a/debug_toolbar/utils/tracking/db.py b/debug_toolbar/utils/tracking/db.py
index 4c9ee53..de84785 100644
--- a/debug_toolbar/utils/tracking/db.py
+++ b/debug_toolbar/utils/tracking/db.py
@@ -10,7 +10,7 @@ from django.utils.encoding import force_unicode
from django.utils.hashcompat import sha_constructor
from debug_toolbar.utils import ms_from_timedelta, tidy_stacktrace, get_template_info
-
+from debug_toolbar.utils.compat.db import connections
# TODO:This should be set in the toolbar loader as a default and panels should
# get a copy of the toolbar object with access to its config dictionary
SQL_WARNING_THRESHOLD = getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {}) \
@@ -29,6 +29,9 @@ class CursorWrapper(object):
self.logger = logger
def execute(self, sql, params=()):
+ alias = getattr(self, 'alias', 'default')
+ # HACK: avoid imports
+ engine = connections[alias].connection.__class__.__module__.split('.', 1)[0]
start = datetime.now()
try:
return self.cursor.execute(sql, params)
@@ -56,9 +59,9 @@ class CursorWrapper(object):
pass
del cur_frame
- # We keep `sql` to maintain backwards compatibility
- self.logger.record(**{
- 'alias': getattr(self, 'alias', 'default'),
+ params = {
+ 'engine': engine,
+ 'alias': alias,
'sql': self.db.ops.last_executed_query(self.cursor, sql, params),
'duration': duration,
'raw_sql': sql,
@@ -70,7 +73,18 @@ class CursorWrapper(object):
'is_slow': (duration > SQL_WARNING_THRESHOLD),
'is_select': sql.lower().strip().startswith('select'),
'template_info': template_info,
- })
+ }
+
+ if engine == 'psycopg2':
+ conn = connections[alias].connection
+ params.update({
+ 'trans_status': conn.get_transaction_status(),
+ 'iso_level': conn.isolation_level,
+ 'encoding': conn.encoding,
+ })
+
+ # We keep `sql` to maintain backwards compatibility
+ self.logger.record(**params)
def executemany(self, sql, param_list):
return self.cursor.executemany(sql, param_list)