UnpicklingError 无效加载键,'{
我正在开发一个用 Django
构建的应用程序。我想把一些数据结构,比如 字典
,存储到 MySQL
数据库里。所以我使用了 Python 的 Pickle
模块。当我用 pickle.dumps(some_structure)
把数据存入数据库时,一切都很顺利。我的数据库字段设置为 longblob
,模式是 binary
。
但是,当我在 Django 中访问模型对象的这个字段时:
obj = someModel.get(pk=1)
some_structure = obj.field
content = pickle.loads(some_structure)
就出现了以下错误:
UnpicklingError: invalid load key, '{'.
请帮帮我,我试过在谷歌上查找,但没有找到解决办法。另外,有一个类似的 问题,但和我的问题无关,因为我是在数据库中存储数据。
2 个回答
1
一个损坏的文件可能会导致这个问题。试着用新的pickle对象替换掉旧的那个。这样对我有效。
23
我遇到了这个错误,发现是因为我试图解压一个本来没有被压缩的东西。
更具体来说,我存储了一个Python字典,但没有进行压缩,导致它的开头是一个字符{
。
所以,要解决这个问题,你可以尝试以下两种方法:
- 在从数据存储中取出时,不要解压这个字符串,或者
- 在把对象放入数据存储之前,确认它们已经被压缩过