diff options
| author | Rob Hudson | 2008-09-18 13:44:15 -0700 |
|---|---|---|
| committer | Rob Hudson | 2008-09-18 13:44:15 -0700 |
| commit | 41a7cdbc553d3180f0e355a850bda61f0500d7c1 (patch) | |
| tree | cd6e669785619e8e34be897626901f2dbbd988f5 /debug_toolbar/views.py | |
| parent | e40b2c0fbdbd932be5f9d0550a16b6652de0d38d (diff) | |
| parent | 96ca83db5686f5b8983e7b008a698307130e58c9 (diff) | |
| download | django-debug-toolbar-41a7cdbc553d3180f0e355a850bda61f0500d7c1.tar.bz2 | |
Merge branch 'explain' of git@github.com:robhudson/django-debug-toolbar
Diffstat (limited to 'debug_toolbar/views.py')
| -rw-r--r-- | debug_toolbar/views.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/debug_toolbar/views.py b/debug_toolbar/views.py index 40cc7b1..1b44ed1 100644 --- a/debug_toolbar/views.py +++ b/debug_toolbar/views.py @@ -5,12 +5,41 @@ views in any other way is generally not advised. """ import os +import simplejson import django.views.static from django.conf import settings +from django.db import connection +from django.shortcuts import render_to_response def debug_media(request, path): root = getattr(settings, 'DEBUG_TOOLBAR_MEDIA_ROOT', None) if root is None: parent = os.path.abspath(os.path.dirname(__file__)) root = os.path.join(parent, 'media') - return django.views.static.serve(request, path, root)
\ No newline at end of file + return django.views.static.serve(request, path, root) + +def sql_explain(request): + """ + Returns the output of the SQL EXPLAIN on the given query. + + Expected GET variables: + sql: urlencoded sql with position arguments + params: JSON encoded parameter values + time: time for SQL to execute passed in from toolbar just for redisplay + """ + from debug_toolbar.panels.sql import reformat_sql + sql = request.GET.get('sql', '') + if sql.lower().startswith('select'): + params = simplejson.loads(request.GET.get('params', '')) + cursor = connection.cursor() + cursor.execute("EXPLAIN %s" % (sql,), params) + headers = [d[0] for d in cursor.description] + result = cursor.fetchall() + cursor.close() + context = { + 'result': result, + 'sql': reformat_sql(cursor.db.ops.last_executed_query(cursor, sql, params)), + 'time': request.GET.get('time', 0.0), + 'headers': headers, + } + return render_to_response('debug_toolbar/panels/sql_explain.html', context) |
