7
7
import os
8
8
import django .views .static
9
9
from django .conf import settings
10
- from django .db import connection
11
10
from django .http import HttpResponseBadRequest
12
11
from django .shortcuts import render_to_response
13
12
from django .utils import simplejson
14
13
from django .utils .hashcompat import sha_constructor
15
14
15
+ from debug_toolbar .utils .compat .db import connections
16
+
16
17
class InvalidSQLError (Exception ):
17
18
def __init__ (self , value ):
18
19
self .value = value
@@ -39,12 +40,13 @@ def sql_select(request):
39
40
from debug_toolbar .panels .sql import reformat_sql
40
41
sql = request .GET .get ('sql' , '' )
41
42
params = request .GET .get ('params' , '' )
43
+ alias = request .GET .get ('alias' , 'default' )
42
44
hash = sha_constructor (settings .SECRET_KEY + sql + params ).hexdigest ()
43
45
if hash != request .GET .get ('hash' , '' ):
44
46
return HttpResponseBadRequest ('Tamper alert' ) # SQL Tampering alert
45
47
if sql .lower ().strip ().startswith ('select' ):
46
48
params = simplejson .loads (params )
47
- cursor = connection .cursor ()
49
+ cursor = connections [ alias ] .cursor ()
48
50
cursor .execute (sql , params )
49
51
headers = [d [0 ] for d in cursor .description ]
50
52
result = cursor .fetchall ()
@@ -54,6 +56,7 @@ def sql_select(request):
54
56
'sql' : reformat_sql (cursor .db .ops .last_executed_query (cursor , sql , params )),
55
57
'duration' : request .GET .get ('duration' , 0.0 ),
56
58
'headers' : headers ,
59
+ 'alias' : alias ,
57
60
}
58
61
return render_to_response ('debug_toolbar/panels/sql_select.html' , context )
59
62
raise InvalidSQLError ("Only 'select' queries are allowed." )
@@ -71,12 +74,13 @@ def sql_explain(request):
71
74
from debug_toolbar .panels .sql import reformat_sql
72
75
sql = request .GET .get ('sql' , '' )
73
76
params = request .GET .get ('params' , '' )
77
+ alias = request .GET .get ('alias' , 'default' )
74
78
hash = sha_constructor (settings .SECRET_KEY + sql + params ).hexdigest ()
75
79
if hash != request .GET .get ('hash' , '' ):
76
80
return HttpResponseBadRequest ('Tamper alert' ) # SQL Tampering alert
77
81
if sql .lower ().strip ().startswith ('select' ):
78
82
params = simplejson .loads (params )
79
- cursor = connection .cursor ()
83
+ cursor = connections [ alias ] .cursor ()
80
84
81
85
if settings .DATABASE_ENGINE == "sqlite3" :
82
86
# SQLite's EXPLAIN dumps the low-level opcodes generated for a query;
@@ -94,6 +98,7 @@ def sql_explain(request):
94
98
'sql' : reformat_sql (cursor .db .ops .last_executed_query (cursor , sql , params )),
95
99
'duration' : request .GET .get ('duration' , 0.0 ),
96
100
'headers' : headers ,
101
+ 'alias' : alias ,
97
102
}
98
103
return render_to_response ('debug_toolbar/panels/sql_explain.html' , context )
99
104
raise InvalidSQLError ("Only 'select' queries are allowed." )
@@ -111,12 +116,13 @@ def sql_profile(request):
111
116
from debug_toolbar .panels .sql import reformat_sql
112
117
sql = request .GET .get ('sql' , '' )
113
118
params = request .GET .get ('params' , '' )
119
+ alias = request .GET .get ('alias' , 'default' )
114
120
hash = sha_constructor (settings .SECRET_KEY + sql + params ).hexdigest ()
115
121
if hash != request .GET .get ('hash' , '' ):
116
122
return HttpResponseBadRequest ('Tamper alert' ) # SQL Tampering alert
117
123
if sql .lower ().strip ().startswith ('select' ):
118
124
params = simplejson .loads (params )
119
- cursor = connection .cursor ()
125
+ cursor = connections [ alias ] .cursor ()
120
126
result = None
121
127
headers = None
122
128
result_error = None
@@ -137,6 +143,7 @@ def sql_profile(request):
137
143
'sql' : reformat_sql (cursor .db .ops .last_executed_query (cursor , sql , params )),
138
144
'duration' : request .GET .get ('duration' , 0.0 ),
139
145
'headers' : headers ,
146
+ 'alias' : alias ,
140
147
}
141
148
return render_to_response ('debug_toolbar/panels/sql_profile.html' , context )
142
149
raise InvalidSQLError ("Only 'select' queries are allowed." )
0 commit comments