Skip to content

Commit 6578f0b

Browse files
Matthew J Morrisonrobhudson
authored andcommitted
Added clean_params method to DatabaseStatTracker to scrub non-unicode
data for displaying on the sql panel Signed-off-by: Rob Hudson <[email protected]>
1 parent 3a6c1d9 commit 6578f0b

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

debug_toolbar/panels/sql.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from django.template import Node
1313
from django.template.loader import render_to_string
1414
from django.utils import simplejson
15-
from django.utils.encoding import force_unicode
15+
from django.utils.encoding import force_unicode, DjangoUnicodeDecodeError
1616
from django.utils.hashcompat import sha_constructor
1717
from django.utils.translation import ugettext_lazy as _
1818

@@ -85,12 +85,24 @@ class DatabaseStatTracker(util.CursorDebugWrapper):
8585
Replacement for CursorDebugWrapper which stores additional information
8686
in `connection.queries`.
8787
"""
88+
def clean_params(self, params):
89+
clean_params = ()
90+
for x in params:
91+
try:
92+
force_unicode(x, strings_only=True)
93+
except DjangoUnicodeDecodeError:
94+
clean_params += ("<non unicode object>", )
95+
else:
96+
clean_params += (x, )
97+
return clean_params
98+
8899
def execute(self, sql, params=()):
89100
start = datetime.now()
90101
try:
91102
return self.cursor.execute(sql, params)
92103
finally:
93104
stop = datetime.now()
105+
params = self.clean_params(params)
94106
duration = ms_from_timedelta(stop - start)
95107
stacktrace = tidy_stacktrace(traceback.extract_stack())
96108
_params = ''

0 commit comments

Comments
 (0)