与peewee合作创建一个简单的sqlite数据库,用于存储解析的MRSS提要中的项目,特别是视频URL和视频标题。
我编写了一个小的重复数据删除脚本,用于检查刚刚解析的URL和视频标题是否已经在数据库中。我注意到,当我将URL字符串传递给数据库时,没有任何问题,重复数据删除工作得很好。当我使用像sqlitebrowser这样的应用程序在数据库中浏览我存储在那里的URL时,我看到的URL没有Unicode编码,它们看起来像普通的旧字符串,没有u'
。
但是,当我传递unicode视频标题- like:(u'Animals doing the strangest things',)
时,重复数据删除脚本没有“看到”数据库中的视频标题。解决方案是对视频标题对象做一个简单的转换,就像这样:videoName = str(videoName)
-然而,我不知道为什么现在这样做。当我使用sqlitebrowser浏览数据库中的videoName列时,我看到了视频名称,但它们仍然是Unicode格式的,看起来和以前一样:(u'Animals doing the strangest things',)
你知道这到底是怎么回事吗?这与PeeWee处理字符串序列化的方式有什么关系吗?
发布于 2015-06-30 10:32:33
Peewee对CharField
和TextField
都使用unicode,这意味着您存储在模型上的任何值都会转换为Python unicode
对象(好吧,Py2中的unicode
,Py3中的str
)。
数据库驱动程序(sqlite3
、psycopg2
等)通常负责将unicode转换为适当的编码。
我不确定你描述的bug是什么,但也许你可以分享一些代码来复制它。不过,我可以告诉您,peewee的unicode处理已经过测试并正常工作。
https://stackoverflow.com/questions/31127029
复制相似问题