使用PeeWee

时间:2015-06-29 23:07:35

标签: python string sqlite unicode encoding

使用peewee创建一个简单的sqlite数据库,该数据库通过解析的MRSS提要存储项目,特别是视频URL和视频标题。

我写了一个重复数据删除脚本,用于检查刚解析过的URL和视频标题是否已存在于数据库中。我注意到,当我将URL字符串传递给数据库时,没有问题,重复数据删除工作正常。当我在数据库中浏览我存储的网址时,使用像sqlitebrowser这样的应用,我看到没有Unicode编码的网址,它们看起来像普通的旧字符串,没有u'

然而,当我传递unicode视频标题时 - 如下所示:(u'Animals doing the strangest things',)重复数据删除脚本没有“看到”数据库中的视频标题。解决方案是使用像这样的视频标题对象进行简单的转换:videoName = str(videoName) - 但是,我不知道为什么现在这样做。当我使用sqlitebrowser浏览数据库中的videoName列时,我看到了视频名称,但它们仍然是Unicode并且看起来与以前一样:(u'Animals doing the strangest things',)

知道这里到底发生了什么事吗?这是否与PeeWee处理字符串序列化的奇怪错误有关?

1 个答案:

答案 0 :(得分:1)

Peewee对CharFieldTextField使用unicode,这意味着您在模型上存储的任何值都会转换为Python unicode对象(嗯,unicode in Py2,Py3中的str

数据库驱动程序(sqlite3psycopg2等)通常会处理将unicode转换为适当的编码。

我不确定你在描述的是什么错误,但也许你可以共享一些代码来复制它。我可以告诉你,peewee的unicode处理是经过测试和运作的。