diff options
| -rw-r--r-- | debug_toolbar/panels/sql.py | 14 | 
1 files changed, 13 insertions, 1 deletions
| diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index e1e9bdf..299da66 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -12,7 +12,7 @@ from django.views.debug import linebreak_iter  from django.template import Node  from django.template.loader import render_to_string  from django.utils import simplejson -from django.utils.encoding import force_unicode +from django.utils.encoding import force_unicode, DjangoUnicodeDecodeError  from django.utils.hashcompat import sha_constructor  from django.utils.translation import ugettext_lazy as _ @@ -85,12 +85,24 @@ class DatabaseStatTracker(util.CursorDebugWrapper):      Replacement for CursorDebugWrapper which stores additional information      in `connection.queries`.      """ +    def clean_params(self, params): +        clean_params = () +        for x in params: +            try: +                force_unicode(x, strings_only=True) +            except DjangoUnicodeDecodeError: +                clean_params += ("<non unicode object>", ) +            else: +                clean_params += (x, ) +        return clean_params +      def execute(self, sql, params=()):          start = datetime.now()          try:              return self.cursor.execute(sql, params)          finally:              stop = datetime.now() +            params = self.clean_params(params)              duration = ms_from_timedelta(stop - start)              stacktrace = tidy_stacktrace(traceback.extract_stack())              _params = '' | 
