diff options
Diffstat (limited to 'debug_toolbar/utils/tracking')
| -rw-r--r-- | debug_toolbar/utils/tracking/db.py | 24 |
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) |
