【发布时间】:2015-09-04 15:37:42
【问题描述】:
我的 model.py 看起来像:
import csv
with open("organizationTest.txt","rU") as f:
reader = csv.reader(f)
for row in reader:
_, created = Company.objects.get_or_create(
Name=row[0],
Site=row[1],
)
“名称”和“站点”都在模型中进行了描述!
每当我尝试运行我的服务器时,我都会得到
django.db.utils.ProgrammingError: 你不能使用 8 位字节串,除非你使用可以解释 8 位字节串的 text_factory(比如 text_factory = str)。强烈建议您将应用程序切换为 Unicode 字符串。
我怎样才能将我的应用程序切换到 Unicode 字符串,或者如果有任何其他方法可以解决这个问题,我很想知道!
我很乐意回答任何问题!提前谢谢!
编辑:这是完整的错误:
Traceback(最近一次调用最后一次): 文件“manage.py”,第 10 行,在 execute_from_command_line(sys.argv) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py”,第 338 行,在 execute_from_command_line 实用程序.execute() 执行中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py”,第 312 行 django.setup() 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/init.py”,第 18 行,在设置中 apps.populate(settings.INSTALLED_APPS) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py”,第 108 行,在填充 app_config.import_models(all_models) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/config.py”,第 198 行,在 import_models self.models_module = import_module(models_module_name) import_module 中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/init.py”,第 37 行 进口(名称) 文件“/Users/aghodsib/Desktop/soroush_programming/Python/slik/companies/models.py”,第 58 行,在 描述=行[15], 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/manager.py”,第 127 行,在 manager_method 返回 getattr(self.get_queryset(), name)(*args, **kwargs) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py”,第 405 行,在 get_or_create 返回 self.get(**lookup), False 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py”,第 328 行,在获取 num = len(克隆) len 中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py”,第 144 行 self._fetch_all() _fetch_all 中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py”,第 965 行 self._result_cache = list(self.iterator()) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py”,第 238 行,在迭代器中 结果 = compiler.execute_sql() 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/sql/compiler.py”,第 837 行,在 execute_sql cursor.execute(sql,参数) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/utils.py”,第79行,在执行 return super(CursorDebugWrapper, self).execute(sql, params) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/utils.py”,第64行,在执行 返回 self.cursor.execute(sql, params) exit 中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py”,第 97 行 六.reraise(dj_exc_type,dj_exc_value,回溯) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/utils.py”,第64行,在执行 返回 self.cursor.execute(sql, params) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py”,第318行,在执行 返回 Database.Cursor.execute(self, query, params) django.db.utils.ProgrammingError:除非您使用可以解释 8 位字节串的 text_factory(如 text_factory = str),否则不得使用 8 位字节串。强烈建议您将应用程序切换为 Unicode 字符串。
【问题讨论】:
-
该错误并非来自 Django 本身。请发布完整的回溯,以便我们在上下文中查看问题。
-
我已经添加了完整的错误!
-
试试 Name=row[0].decode('UTF-8')
-
我得到:“UnicodeDecodeError: 'utf8' codec can't decode byte 0xcc in position 0: invalid continuation byte”
-
在这种情况下 Name=row[0].decode('cp1252')
标签: python django python-2.7 unicode django-models