【发布时间】:2009-02-17 10:42:58
【问题描述】:
我正在尝试解开存储为 MySQL 数据库中 blob 的对象。我已经手动生成了腌制对象并将其存储在数据库中,但是当我尝试取消腌制对象时,我得到了以下相当神秘的异常:
ImportError: 没有名为 copy_reg 的模块
关于为什么会发生这种情况的任何想法?
繁殖方法
注意:必须在 Windows PC 上执行步骤 1,在 Linux PC 上执行步骤 3 和 4。
1) 在 Windows PC 上:
file = open("test.txt", "w")
thing = {'a': 1, 'b':2}
cPickle.dump(thing, file)
2) 手动将 text.txt 的内容插入到 Linux 上运行的 MySQL 数据库的 blob 字段中
3) 在Linux机器上运行的Python中,从MySQL获取列的内容
4) 假设您将 blob 列的内容放入一个名为 data 的变量中,试试这个:
cPickle.loads(rawString)
【问题讨论】:
-
你用的是什么版本的python?
-
这是 Python 2.4
-
在这种情况下代码会添加什么?
-
@Stephen Edmonds:由于没有代码,我不得不假设您使用的是什么代码。可悲的是,我假设的代码运行良好,所以我无法重现你的问题。如果我有你的代码,而不是我的,我可能会提供帮助。
-
@S.Lott:我现在添加了代码 sn-ps,但正如您所见,它们并没有太大帮助。问题难以重现的主要原因是您需要在 Windows 上腌制对象,将其保存到文件中,然后尝试在 Linux 上取消腌制。