aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'debug_toolbar/views.py')
-rw-r--r--debug_toolbar/views.py36
1 files changed, 22 insertions, 14 deletions
diff --git a/debug_toolbar/views.py b/debug_toolbar/views.py
index 9123a00..5a412af 100644
--- a/debug_toolbar/views.py
+++ b/debug_toolbar/views.py
@@ -33,7 +33,7 @@ def sql_select(request):
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
+ duration: 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
@@ -52,7 +52,7 @@ def sql_select(request):
context = {
'result': result,
'sql': reformat_sql(cursor.db.ops.last_executed_query(cursor, sql, params)),
- 'time': request.GET.get('time', 0.0),
+ 'duration': request.GET.get('duration', 0.0),
'headers': headers,
}
return render_to_response('debug_toolbar/panels/sql_select.html', context)
@@ -65,7 +65,7 @@ def sql_explain(request):
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
+ duration: 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
@@ -84,7 +84,7 @@ def sql_explain(request):
context = {
'result': result,
'sql': reformat_sql(cursor.db.ops.last_executed_query(cursor, sql, params)),
- 'time': request.GET.get('time', 0.0),
+ 'duration': request.GET.get('duration', 0.0),
'headers': headers,
}
return render_to_response('debug_toolbar/panels/sql_explain.html', context)
@@ -97,7 +97,7 @@ def sql_profile(request):
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
+ duration: 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
@@ -109,21 +109,28 @@ def sql_profile(request):
if sql.lower().strip().startswith('select'):
params = simplejson.loads(params)
cursor = connection.cursor()
- cursor.execute("SET PROFILING=1") # Enable profiling
- cursor.execute(sql, params) # Execute SELECT
- cursor.execute("SET PROFILING=0") # Disable profiling
- # The Query ID should always be 1 here but I'll subselect to get the last one just in case...
- cursor.execute("SELECT * FROM information_schema.profiling WHERE query_id=(SELECT query_id FROM information_schema.profiling ORDER BY query_id DESC LIMIT 1)")
- headers = [d[0] for d in cursor.description]
- result = cursor.fetchall()
+ result = None
+ headers = None
+ result_error = None
+ try:
+ cursor.execute("SET PROFILING=1") # Enable profiling
+ cursor.execute(sql, params) # Execute SELECT
+ cursor.execute("SET PROFILING=0") # Disable profiling
+ # The Query ID should always be 1 here but I'll subselect to get the last one just in case...
+ cursor.execute("SELECT * FROM information_schema.profiling WHERE query_id=(SELECT query_id FROM information_schema.profiling ORDER BY query_id DESC LIMIT 1)")
+ headers = [d[0] for d in cursor.description]
+ result = cursor.fetchall()
+ except:
+ result_error = "Profiling is either not available or not supported by your database."
cursor.close()
context = {
'result': result,
+ 'result_error': result_error,
'sql': reformat_sql(cursor.db.ops.last_executed_query(cursor, sql, params)),
- 'time': request.GET.get('time', 0.0),
+ 'duration': request.GET.get('duration', 0.0),
'headers': headers,
}
- return render_to_response('debug_toolbar/panels/sql_explain.html', context)
+ return render_to_response('debug_toolbar/panels/sql_profile.html', context)
raise InvalidSQLError("Only 'select' queries are allowed.")
def template_source(request):
@@ -147,6 +154,7 @@ def template_source(request):
source = highlight(source, HtmlDjangoLexer(), HtmlFormatter())
source = mark_safe(source)
+ source.pygmentized = True
except ImportError:
pass