我的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位字节串的text_factory(如text_factory = str),否则不得使用8位字节串 . 强烈建议您只需将应用程序切换为Unicode字符串 .
我怎么能像我们说的那样将我的应用程序切换到Unicode字符串,或者如果有任何其他方法可以解决这个问题,我很想知道!
我很乐意回答任何问题!先感谢您!
EDIT: Here is the full error:
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 utility.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行,in import_models self.models_module = import_module(models_module_name)文件“/Library/Frameworks/Python.framework/Versions/2 .7 / lib / python2.7 / importlib / init.py“,第37行,在import_module导入(名称)文件”/Users/aghodsib/Desktop/soroush_programming/Python/slik/companies/models.py“,第58行,在description = row [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)File“/ Library / Frameworks / Python.framework / Version / 7.7 / lib / python2.7 / site-packages / django / db / model / query .py“,第405行,在get_or_create中返回self.get(**查找),False文件”/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models /query.py“,第328行,在get num = len(clone)文件”/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query . py“,第144行,在len self._fetch_all()文件”/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py“,行965,在_fetch_all self中 . _result_cache = list(self.iterator())文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py”,第238行,in iterator results = compiler.execute_sql()File“/ Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/sql/compiler.py”,第837行,in execute_sql cursor.execute(sql,params)文件“/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)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py”,第97行,在exit.6.reraise(dj_exc_type,dj_exc_value,traceback)文件中“/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位字节串除非你使用一个可以解释8位字节串的text_factory(比如text_factory = str) . 强烈建议您只需将应用程序切换为Unicode字符串 .
3 回答
您似乎从一个不寻常的编解码器获取字符 .
csv文件的来源应该能够告诉你他们正在使用什么 .
但是,您可以像这样从一个编解码器转换到另一个编解码器:
我建议你尝试一下 . 如果仍然无效,请联系csv的创建者文件 .
来自Python CSV docs:
试试这个: