【发布时间】:2013-11-25 04:40:38
【问题描述】:
我已经使用 pickle.dumps 腌制了一个字典列表。我将字符串保存在 MySQL 数据库的文本字段中 - 由 Django 管理。当我提取字符串并尝试将字符串解压缩到字典列表时,我收到以下错误:
>>> 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
我不知道为什么会这样!
【问题讨论】:
-
错误信息明确指出
intlist1的类型为ValuesQuerySet。那不是字符串。将其转换为字符串。 -
但是我从数据库的表中的列中获取 intlist1,其中元素存储为“文本”,我使用 pickle.dumps 保存了元素。
-
不过,您正在将
ValuesQuerySet类型的对象传递给loads,这就是您收到错误的原因。你的问题是真的关于如何正确使用你的数据库。但是您还没有说您正在使用哪个数据库,也没有显示任何存储或检索代码的数据库。在你做之前没有人可以帮助你。 -
顺便问一下,使用的是 Django 吗?如果是,请说出来。
-
是的,我是。很抱歉,如果这造成了混乱
标签: python django serialization pickle