2015-06-29 58 views
0

使用peewee創建一個簡單的sqlite數據庫,該數據庫存儲瞭解析的MRSS源的項目,特別是視頻URL和視頻標題。使用PeeWee將Unicode字符串存儲到SQLite數據庫

我寫了一個重複數據刪除腳本,用於檢查剛分析過的URL和視頻標題是否已經存在於數據庫中。我注意到,當我將URL字符串傳遞到數據庫時,沒有問題,重複數據刪除工作正常。當我通過數據庫瀏覽我存儲在那裏的URL時,使用像sqlitebrowser這樣的應用,我看到沒有Unicode編碼的URL,它們看起來像普通的舊字符串,不是u'

但是,當我傳遞unicode視頻標題時 - 例如:(u'Animals doing the strangest things',),重複數據刪除腳本並未「看見」數據庫中的視頻標題。解決方案是像這樣做一個簡單的視頻標題對象轉換:videoName = str(videoName) - 但是,我不知道爲什麼現在可以工作。當我使用sqlitebrowser瀏覽我的數據庫中的videoName列時,我看到了視頻名稱,但它們仍然是Unicode格式,看起來與之前一樣:(u'Animals doing the strangest things',)

任何想法這裏發生了什麼?這與PeeWee如何處理字符串序列化的怪異錯誤有關嗎?

回答

1

Peewee使用Unicode兩個CharFieldTextField,這意味着任何值已存儲在您的模型轉換爲一個Python unicode對象(當然,unicode中的Py2,str在PY 3)。

數據庫驅動程序(sqlite3psycopg2等)通常會處理將unicode轉換爲適當的編碼。

我不確定你描述的錯誤是什麼,但也許你可以分享一些代碼來複制它。我可以告訴你,peewee的unicode處理已經過測試並且可行。

+0

感謝您的回覆,您認爲會怎樣解釋或PeeWee不允許我存儲'videoName'中存儲的視頻名稱,直到我將其更改爲'str(videoName)'? – AdjunctProfessorFalcon

+0

「不允許」是什麼意思?有錯誤嗎? – coleifer

+0

只有當我將videoName中保存的unicode字符串更改爲str(videoName)時,纔會顯示在SQLite數據庫中。 – AdjunctProfessorFalcon

相關問題