blob: 5bdf45051bd74c1d286aa5daff3a79f40c1a3cec (
plain)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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)
        
 |