Opened 16 years ago
Closed 15 years ago
#13322 closed Bug (needsinfo)
Problem with inspectdb and encoding
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | Core (Management commands) | Version: | 1.2-beta |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | yes | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
While trying to generate model from database with manage.py inspectdb I get the following error:
class Categorias(models.Model):
Traceback (most recent call last):
File "./manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.6/site-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.6/site-packages/django/core/management/base.py", line 223, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.6/site-packages/django/core/management/base.py", line 352, in handle
return self.handle_noargs(**options)
File "/usr/local/lib/python2.6/site-packages/django/core/management/commands/inspectdb.py", line 22, in handle_noargs
for line in self.handle_inspection(options):
File "/usr/local/lib/python2.6/site-packages/django/core/management/commands/inspectdb.py", line 113, in handle_inspection
field_desc = '%s = models.%s' % (att_name, field_type)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128)
Attachments (1)
Change History (9)
comment:1 by , 16 years ago
comment:3 by , 16 years ago
| Component: | Uncategorized → django-admin.py inspectdb |
|---|---|
| Has patch: | set |
| milestone: | → 1.2 |
Decode UTF-8 for table attribute names:
--- django/core/management/commands/inspectdb.py (revisión: 12947)
+++ django/core/management/commands/inspectdb.py (copia de trabajo)
@@ -110,7 +110,7 @@
if not field_type in ('TextField(', 'CharField('):
extra_params['null'] = True
- field_desc = '%s = models.%s' % (att_name, field_type)
+ field_desc = '%s = models.%s' % (att_name.decode('utf-8'), field_type)
if extra_params:
if not field_desc.endswith('('):
field_desc += ', '
comment:4 by , 16 years ago
| milestone: | 1.2 |
|---|---|
| Needs tests: | set |
| Triage Stage: | Unreviewed → Accepted |
This isn't critical for 1.2.
It's difficult to evaluate whether the patch is correct without seeing a test case.
comment:5 by , 16 years ago
Test case:
create table test ( día date ); ---------------------------- myconsole> django-admin.py inspectdb ----------------------------
comment:6 by , 15 years ago
| Component: | django-admin.py inspectdb → Core (Management commands) |
|---|
comment:7 by , 15 years ago
| Severity: | → Normal |
|---|---|
| Type: | → Bug |
comment:8 by , 15 years ago
| Easy pickings: | unset |
|---|---|
| Resolution: | → needsinfo |
| Status: | new → closed |
I attached a test that works for me (SQLite/Python2.6/Linux). But the problem might be triggered by a specific backend/python/OS combination. You should give more information about the conditions under which you are able to reproduce the bug.
While trying to generate model from database with manage.py inspectdb I get the following error:
class Categorias(models.Model): Traceback (most recent call last): File "./manage.py", line 11, in <module> execute_manager(settings) File "/usr/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager utility.execute() File "/usr/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.6/site-packages/django/core/management/base.py", line 196, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/local/lib/python2.6/site-packages/django/core/management/base.py", line 223, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.6/site-packages/django/core/management/base.py", line 352, in handle return self.handle_noargs(**options) File "/usr/local/lib/python2.6/site-packages/django/core/management/commands/inspectdb.py", line 22, in handle_noargs for line in self.handle_inspection(options): File "/usr/local/lib/python2.6/site-packages/django/core/management/commands/inspectdb.py", line 113, in handle_inspection field_desc = '%s = models.%s' % (att_name, field_type) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128)