diff options
| author | Rob Hudson | 2008-10-06 13:07:56 -0700 | 
|---|---|---|
| committer | Rob Hudson | 2008-10-06 13:07:56 -0700 | 
| commit | e9271bf69ab50cb24e38ac2205847c8d32b83ca8 (patch) | |
| tree | 621d0ae253fc1990c65224fafac2af1c9a974223 /debug_toolbar/views.py | |
| parent | 49a177a41f790a494a933963fd7b2f5216f98a85 (diff) | |
| download | django-debug-toolbar-e9271bf69ab50cb24e38ac2205847c8d32b83ca8.tar.bz2 | |
Just like EXPLAIN, adding the output of straight SELECT statements so you can
view the raw SQL output.
Diffstat (limited to 'debug_toolbar/views.py')
| -rw-r--r-- | debug_toolbar/views.py | 31 | 
1 files changed, 31 insertions, 0 deletions
| diff --git a/debug_toolbar/views.py b/debug_toolbar/views.py index b67a70b..4b666e1 100644 --- a/debug_toolbar/views.py +++ b/debug_toolbar/views.py @@ -20,6 +20,37 @@ def debug_media(request, path):          root = os.path.join(parent, 'media')      return django.views.static.serve(request, path, root) +def sql_select(request): +    """ +    Returns the output of the SQL SELECT statement. + +    Expected GET variables: +        sql: urlencoded sql with positional arguments +        params: JSON encoded parameter values +        time: time for SQL to execute passed in from toolbar just for redisplay +        hash: the hash of (secret + sql + params) for tamper checking +    """ +    from debug_toolbar.panels.sql import reformat_sql +    sql = request.GET.get('sql', '') +    params = request.GET.get('params', '') +    hash = sha_constructor(settings.SECRET_KEY + sql + params).hexdigest() +    if hash != request.GET.get('hash', ''): +        return HttpResponse('<h3>Tamper alert</h3>') # SQL Tampering alert +    if sql.lower().startswith('select'): +        params = simplejson.loads(params) +        cursor = connection.cursor() +        cursor.execute(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_select.html', context) +  def sql_explain(request):      """      Returns the output of the SQL EXPLAIN on the given query. | 
