#22377: SQL Logging throws an exception when fields have utf-8 characters
-------------------------------------+-------------------------------------
     Reporter:  rolanvc@…            |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  1.6
  (models, ORM)                      |               Resolution:
     Severity:  Normal               |             Triage Stage:
     Keywords:  sql logging for      |  Unreviewed
  utf-8                              |      Needs documentation:  0
    Has patch:  0                    |  Patch needs improvement:  0
  Needs tests:  0                    |                    UI/UX:  0
Easy pickings:  0                    |
-------------------------------------+-------------------------------------
Changes (by kahnert):

 * status:  closed => new
 * resolution:  needsinfo =>


Comment:

 Here is a traceback:
 {{{
 Traceback (most recent call last):
   File "./manage.py", line 10, in <module>
     execute_from_command_line(sys.argv)
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 399, in
 execute_from_command_line
     utility.execute()
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 392, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/core/management/base.py", line 242, in run_from_argv
     self.execute(*args, **options.__dict__)
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/core/management/base.py", line 285, in execute
     output = self.handle(*args, **options)
   File
 
"/home/kahnert/pycharm/schedules/schedules/data/management/commands/import_data.py",
 line 35, in handle
     self.parse_file(fname)
   File
 
"/home/kahnert/pycharm/schedules/schedules/data/management/commands/import_data.py",
 line 40, in parse_file
     self.parse_entry(cols)
   File
 
"/home/kahnert/pycharm/schedules/schedules/data/management/commands/import_data.py",
 line 61, in parse_entry
     row_header, created = OIRowHeader.objects.get_or_create(**header_vals)
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/models/manager.py", line 154, in get_or_create
     return self.get_queryset().get_or_create(**kwargs)
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/models/query.py", line 376, in get_or_create
     return self.get(**lookup), False
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/models/query.py", line 304, in get
     num = len(clone)
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/models/query.py", line 77, in __len__
     self._fetch_all()
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/models/query.py", line 857, in _fetch_all
     self._result_cache = list(self.iterator())
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/models/query.py", line 220, in iterator
     for row in compiler.results_iter():
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/models/sql/compiler.py", line 713, in results_iter
     for rows in self.execute_sql(MULTI):
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/models/sql/compiler.py", line 786, in execute_sql
     cursor.execute(sql, params)
   File "/mnt/schedenv/local/lib/python2.7/site-
 packages/django/db/backends/util.py", line 78, in execute
     logger.debug('(%.3f) %s; args=%s' % (duration, sql, params),
 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 450:
 ordinal not in range(128)
 }}}
 I can't provide the data values, most likely some russian or chinese
 string, but I think the bug is obvious if you look into
 `django.db.backends.util.CursorDebugWrapper`:
 - Python 2
 - percent-formatting into bytestrings (`str`-Type)
 -> UnicodeDecodeError for any non-ascii char

 The solution should be as simple as: Use `six` string types

 This is realy a hassle, since you have to work around '''de'''bugging Code
 at the moment.

--
Ticket URL: <https://code.djangoproject.com/ticket/22377#comment:3>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/075.69b396fd87bf0f131a4474609d45ad8d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to