UnpicklingError 无效加载键,'{

18 投票
2 回答
52124 浏览
提问于 2025-04-17 06:13

我正在开发一个用 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字典,但没有进行压缩,导致它的开头是一个字符{

所以,要解决这个问题,你可以尝试以下两种方法:

  • 在从数据存储中取出时,不要解压这个字符串,或者
  • 在把对象放入数据存储之前,确认它们已经被压缩过

撰写回答