2013-11-25 52 views
0

我使用pickle.dumps醃製了一個字典列表。我將字符串保存在MySQL數據庫的文本字段中 - 由Django管理。當我提取字符串,並嘗試unpickle的字符串字典的名單,我得到以下錯誤:Python Pickle載入錯誤

>>> pickle.loads(intlist1) 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/usr/lib/python2.7/pickle.py", line 1381, in loads 
    file = StringIO(str) 
TypeError: expected read buffer, ValuesQuerySet found 
>>> 

編輯: 周圍想通了的工作。雖然無法理解解決方案。

pickle.loads(intlist1) #did not work 
pickle.loads(intlist1[0].values()[0]) #works 

我不知道爲什麼是這種情況!

+0

錯誤消息清楚地表明'intlist1'屬於'ValuesQuerySet'類型。這不是一個字符串。將其轉換爲字符串。 –

+0

但是我從數據庫中的表中的列中獲取intlist1,其中元素存儲爲「文本」,並使用pickle.dumps保存了元素。 –

+0

儘管如此,你*將* ValuesQuerySet類型的對象傳遞給'loads',這就是爲什麼你會收到錯誤。你的問題是真的*關於如何正確使用你的數據庫。但是你沒有說過你正在使用哪個數據庫,或者顯示了任何數據庫存儲或檢索代碼。直到你做任何事都無法幫助你。 –

回答

0

這是一個愚蠢的錯誤。抱歉。

我是從數據庫中獲取intlist1作爲

.values( '利益'),忘了[0] [ '利益'] [0]來獲得後的價值。愚蠢的錯誤。抱歉。謝謝