pysqlite DatabaseError:除非使用text_factory,否则不得使用8位字节串

时间:2013-06-19 22:51:23

标签: django sqlite django-models pysqlite

我正在尝试将我正在通过csv文件读取的文档字符串插入到sqlite数据库中,该数据库中包含像(children's)这样的字符,它会抛出以下错误:

  

DatabaseError:除非使用a,否则不得使用8位字节串   text_factory,可以解释8位字节串(如text_factory =   STR)。强烈建议您只需切换即可   应用于Unicode字符串。

在插入文档之前,我确保将字符串转换为unistring。

  

unicode('Children'','unicode-escape')

我正在使用Django ORM来保存数据。我有什么办法可以摆脱这个吗?

1 个答案:

答案 0 :(得分:1)

导致错误的.execute()参数是Python字节串,而不是像你说的那样的unicode字符串。解决方案:创建一个unicode字符串:unicode(your_data,your_encoding)。对于大多数csv文件,编码将是" latin-1"或者" uft-8"。

使用" unicode-escape"几乎肯定是错的。它是一个特定于Python的编码意味着"生成一个适合作为Python源代码中的Unicode文字的字符串"根据文档(https://docs.python.org/2/library/codecs.html)。