diff options
| author | Rob Hudson | 2008-09-11 23:21:12 -0700 | 
|---|---|---|
| committer | Rob Hudson | 2008-09-11 23:21:12 -0700 | 
| commit | 4591e34f0140c43e68e4ecd97eae7f3ea05878f6 (patch) | |
| tree | cfb460212471d9d41b32e2732620822e3cf38e22 /debug_toolbar/views.py | |
| parent | 8377ea179568c1fbf8f46db1234e85d689daae0a (diff) | |
| download | django-debug-toolbar-4591e34f0140c43e68e4ecd97eae7f3ea05878f6.tar.bz2 | |
Adding view to explain SQL passed in via query string.  Hopefully this is
database backend agnostic.  Next up is connecting this with the SQL panel via
AJAX.
Diffstat (limited to 'debug_toolbar/views.py')
| -rw-r--r-- | debug_toolbar/views.py | 30 | 
1 files changed, 30 insertions, 0 deletions
| diff --git a/debug_toolbar/views.py b/debug_toolbar/views.py new file mode 100644 index 0000000..5bdf450 --- /dev/null +++ b/debug_toolbar/views.py @@ -0,0 +1,30 @@ +import simplejson +from django.db import connection +from django.shortcuts import render_to_response +from debug_toolbar.panels.sql import reformat_sql + +def 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 +    """ +    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) +        
\ No newline at end of file | 
