使用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处理字符串序列化的奇怪错误有关?
答案 0 :(得分:1)
Peewee对CharField
和TextField
使用unicode,这意味着您在模型上存储的任何值都会转换为Python unicode
对象(嗯,unicode
in Py2,Py3中的str
。
数据库驱动程序(sqlite3
,psycopg2
等)通常会处理将unicode转换为适当的编码。
我不确定你在描述的是什么错误,但也许你可以共享一些代码来复制它。我可以告诉你,peewee的unicode处理是经过测试和运作的。