diff options
Diffstat (limited to 'debug_toolbar/utils')
| -rw-r--r-- | debug_toolbar/utils/compat/db.py | 9 | ||||
| -rw-r--r-- | debug_toolbar/utils/tracking/db.py | 24 |
2 files changed, 27 insertions, 6 deletions
diff --git a/debug_toolbar/utils/compat/db.py b/debug_toolbar/utils/compat/db.py index f3b37e6..4273d9e 100644 --- a/debug_toolbar/utils/compat/db.py +++ b/debug_toolbar/utils/compat/db.py @@ -1,6 +1,13 @@ +from django.conf import settings try: from django.db import connections + dbconf = settings.DATABASES except ImportError: # Compat with < Django 1.2 from django.db import connection - connections = {'default': connection}
\ No newline at end of file + connections = {'default': connection} + dbconf = { + 'default': { + 'ENGINE': settings.DATABASE_ENGINE, + } + }
\ No newline at end of file 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) |
