UnpicklingError无效的加载密钥,'{'

时间:2011-11-13 10:59:30

标签: python mysql pickle

我正在处理Django中的应用程序。我试图在e.g. dictionary db中存储一些数据结构MySQL。所以我使用Python Pickle模块。当我使用pickle.dumps(some_structure)将其存储在db中时,它工作正常。我的数据库字段为longblob模式为binary

但是当我在django中访问模型对象的字段时:

obj = someModel.get(pk=1)
some_structure = obj.field
content  = pickle.loads(some_structure)

引发以下错误:

UnpicklingError: invalid load key, '{'.

请帮助我,我试过谷歌,但它没有帮助我,也有一个类似的Question但它与我的问题无关,因为我存储在数据库中。

2 个答案:

答案 0 :(得分:15)

我遇到了这个错误,我发现这是因为我试图破坏原本没有被腌制的东西。

更具体地说,我存储了一个没有腌制它的Python字典,导致了最初的字符{

因此,要解决这个问题,你应该尝试:

  • 从数据存储区检索时不要取消对字符串的修改,或
  • 在插入数据存储区之前验证对象是否被腌制

答案 1 :(得分:1)

损坏的文件可能会导致此问题。用新的腌制对象替换旧的腌制对象。它为我工作。