Python 将应用程序切换到Unicode
My model.py看起来像:Python 将应用程序切换到Unicode,python,django,python-2.7,unicode,django-models,Python,Django,Python 2.7,Unicode,Django Models,My 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],
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位ByTestRing的文本工厂(如text\u factory=str),否则不能使用8位ByTestRing。强烈建议您将应用程序切换到Unicode字符串
我怎样才能将我的应用程序切换到上面提到的Unicode字符串,或者如果有其他方法来解决这个问题,我很想知道
我很乐意回答任何问题!提前谢谢你
编辑:以下是全部错误:
回溯(最近一次呼叫最后一次):
文件“manage.py”,第10行,在
从命令行(sys.argv)执行命令
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/core/management/init.py”,第338行,从命令行执行
utility.execute()
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/core/management/init.py”,第312行,在execute中
django.setup()
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/init.py”,第18行,在安装程序中
应用程序。填充(设置。已安装的应用程序)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/apps/registry.py”,第108行,填充
app_config.import_models(所有_models)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/apps/config.py”,第198行,在import_模型中
self.models\u module=导入模块(models\u module\u name)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/init.py”,第37行,在导入模块中
导入(名称)
文件“/Users/aghodsib/Desktop/soroush_programming/Python/slik/companys/models.py”,第58行,在
description=第[15]行,
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/manager.py”,第127行,在manager_方法中
返回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_或_create中
返回self.get(**查找),False
get中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/query.py”,第328行
num=len(克隆)
文件“/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行,全部
self.\u result\u cache=list(self.iterator())
迭代器中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/query.py”,第238行
结果=编译器。执行_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,params)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/backends/utils.py”,执行中第79行
返回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行,在退出
6.重新播放(dj_exc_类型、dj_exc_值、回溯)
文件“/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位ByTestRing的文本工厂(如text\u factory=str),否则不能使用8位ByTestRing。强烈建议您将应用程序切换到Unicode字符串
试试这个:
import csv
with open("organizationTest.txt","rU") as f:
reader = csv.reader(f)
for row in reader:
_, created = Company.objects.get_or_create(
Name=unicode(row[0]),
Site=unicode(row[1]),
)
试试这个:
import csv
with open("organizationTest.txt","rU") as f:
reader = csv.reader(f)
for row in reader:
_, created = Company.objects.get_or_create(
Name=unicode(row[0]),
Site=unicode(row[1]),
)
从:
csv模块不直接支持读取和写入Unicode,
但它是8位干净的,除了ASCII NUL的一些问题
人物。因此,您可以编写函数或类来处理
只要您避免像这样的编码,就可以为您进行编码和解码
使用NUL的UTF-16。建议使用UTF-8
下面的unicode_csv_reader()是一个生成器,它将csv.reader包装到
处理Unicode CSV数据(Unicode字符串列表)
从:
csv模块不直接支持读取和写入Unicode,
但它是8位干净的,除了ASCII NUL的一些问题
人物。因此,您可以编写函数或类来处理
只要您避免像这样的编码,就可以为您进行编码和解码
使用NUL的UTF-16。建议使用UTF-8
下面的unicode_csv_reader()是一个生成器,它将csv.reader包装到
处理Unicode CSV数据(Unicode字符串列表)
您似乎从一个不寻常的编解码器中获取字符。
csv文件的源应该能够告诉您他们在使用什么。
但是,您可以从一个编解码器切换到另一个编解码器,如下所示:
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].decode('latin-1').encode('utf8'),
Site=row[1].decode('latin-1').encode('utf8'),
)
我建议你试试看。如果仍然无法使用,请联系csv文件的创建者。您似乎从一个不寻常的编解码器中获取字符。
csv文件的源应该能够告诉您它们在使用什么