diff options
| author | David Cramer | 2012-01-12 19:13:47 -0800 |
|---|---|---|
| committer | David Cramer | 2012-01-12 19:13:47 -0800 |
| commit | 01cd08518ded622d3308dd539b00ebbf7012894e (patch) | |
| tree | a9cca14ff92d4602a51d4999430574587a733d1d /debug_toolbar/panels/sql.py | |
| parent | c4eeef24faa81e7bc64ebfbd72c046f25c7b3381 (diff) | |
| download | django-debug-toolbar-01cd08518ded622d3308dd539b00ebbf7012894e.tar.bz2 | |
pep8
Diffstat (limited to 'debug_toolbar/panels/sql.py')
| -rw-r--r-- | debug_toolbar/panels/sql.py | 67 |
1 files changed, 31 insertions, 36 deletions
diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index b27e6c0..18fffdc 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -18,12 +18,12 @@ from debug_toolbar.utils.tracking import replace_call @replace_call(BaseDatabaseWrapper.cursor) def cursor(func, self): result = func(self) - + djdt = DebugToolbarMiddleware.get_current() if not djdt: return result logger = djdt.get_panel(SQLDebugPanel) - + return CursorWrapper(result, self, logger=logger) @@ -39,7 +39,7 @@ def get_isolation_level_display(engine, level): } else: raise ValueError(engine) - + return choices.get(level) @@ -55,7 +55,7 @@ def get_transaction_status_display(engine, level): } else: raise ValueError(engine) - + return choices.get(level) @@ -67,7 +67,7 @@ class SQLDebugPanel(DebugPanel): name = 'SQL' template = 'debug_toolbar/panels/sql.html' has_content = True - + def __init__(self, *args, **kwargs): super(SQLDebugPanel, self).__init__(*args, **kwargs) self._offset = dict((k, len(connections[k].queries)) for k in connections) @@ -77,33 +77,33 @@ class SQLDebugPanel(DebugPanel): self._databases = {} self._transaction_status = {} self._transaction_ids = {} - + def get_transaction_id(self, alias): conn = connections[alias].connection if not conn: return None - + engine = conn.__class__.__module__.split('.', 1)[0] if engine == 'psycopg2': cur_status = conn.get_transaction_status() else: raise ValueError(engine) - + last_status = self._transaction_status.get(alias) self._transaction_status[alias] = cur_status - + if not cur_status: # No available state return None - + if cur_status != last_status: if cur_status: self._transaction_ids[alias] = uuid.uuid4().hex else: self._transaction_ids[alias] = None - + return self._transaction_ids[alias] - + def record(self, alias, **kwargs): self._queries.append((alias, kwargs)) if alias not in self._databases: @@ -116,10 +116,10 @@ class SQLDebugPanel(DebugPanel): self._databases[alias]['num_queries'] += 1 self._sql_time += kwargs['duration'] self._num_queries += 1 - + def nav_title(self): return _('SQL') - + def nav_subtitle(self): # TODO l10n: use ngettext return "%d %s in %.2fms" % ( @@ -127,30 +127,25 @@ class SQLDebugPanel(DebugPanel): (self._num_queries == 1) and 'query' or 'queries', self._sql_time ) - + def title(self): count = len(self._databases) - + return __('SQL Queries from %(count)d connection', 'SQL Queries from %(count)d connections', count) % dict( count=count, ) - + def url(self): return '' - + def process_response(self, request, response): if self._queries: width_ratio_tally = 0 - colors = [ - (256, 0, 0), # red - (0, 256, 0), # blue - (0, 0, 256), # green - ] - factor = int(256.0/(len(self._databases)*2.5)) + factor = int(256.0 / (len(self._databases) * 2.5)) for n, db in enumerate(self._databases.itervalues()): rgb = [0, 0, 0] color = n % 3 - rgb[color] = 256 - n/3*factor + rgb[color] = 256 - n / 3 * factor nn = color # XXX: pretty sure this is horrible after so many aliases while rgb[color] < factor: @@ -161,23 +156,23 @@ class SQLDebugPanel(DebugPanel): nn = 0 rgb[nn] = nc db['rgb_color'] = rgb - + trans_ids = {} trans_id = None i = 0 for alias, query in self._queries: trans_id = query.get('trans_id') last_trans_id = trans_ids.get(alias) - + if trans_id != last_trans_id: if last_trans_id: - self._queries[i-1][1]['ends_trans'] = True + self._queries[(i - 1)][1]['ends_trans'] = True trans_ids[alias] = trans_id if trans_id: query['starts_trans'] = True if trans_id: query['in_trans'] = True - + query['alias'] = alias if 'iso_level' in query: query['iso_level'] = get_isolation_level_display(query['engine'], query['iso_level']) @@ -187,14 +182,14 @@ class SQLDebugPanel(DebugPanel): query['rgb_color'] = self._databases[alias]['rgb_color'] try: query['width_ratio'] = (query['duration'] / self._sql_time) * 100 - query['width_ratio_relative'] = 100.0 * query['width_ratio'] / (100.0 - width_ratio_tally) + query['width_ratio_relative'] = 100.0 * query['width_ratio'] / (100.0 - width_ratio_tally) except ZeroDivisionError: query['width_ratio'] = 0 query['width_ratio_relative'] = 0 query['start_offset'] = width_ratio_tally query['end_offset'] = query['width_ratio'] + query['start_offset'] width_ratio_tally += query['width_ratio'] - + stacktrace = [] for frame in query['stacktrace']: params = map(escape, frame[0].rsplit('/', 1) + list(frame[1:])) @@ -205,10 +200,10 @@ class SQLDebugPanel(DebugPanel): continue query['stacktrace'] = mark_safe('\n'.join(stacktrace)) i += 1 - + if trans_id: - self._queries[i-1][1]['ends_trans'] = True - + self._queries[(i - 1)][1]['ends_trans'] = True + self.record_stats({ 'databases': sorted(self._databases.items(), key=lambda x: -x[1]['time_spent']), 'queries': [q for a, q in self._queries], @@ -236,6 +231,6 @@ def swap_fields(sql): def reformat_sql(sql): stack = sqlparse.engine.FilterStack() - stack.preprocess.append(BoldKeywordFilter()) # add our custom filter - stack.postprocess.append(sqlparse.filters.SerializerUnicode()) # tokens -> strings + stack.preprocess.append(BoldKeywordFilter()) # add our custom filter + stack.postprocess.append(sqlparse.filters.SerializerUnicode()) # tokens -> strings return swap_fields(''.join(stack.run(sql))) |
