【发布时间】:2018-07-22 17:49:56
【问题描述】:
我从数据库中抓取了大量数据,并使用 Python 的 shelve 模块将其保存为 "first_database.db"(我使用的是 Python 3.4)。我之前遇到过shelve 的问题(请参阅my old issues),这可能是由于与我的古老操作系统(OSX 10.9.4)和gdbm/dbm.gnu 有关。
现在我遇到了一个更棘手的问题:我创建了一个 ~170 MB 的新文件,而现在 无论如何我只能访问一个键/值。强>
我知道可能的键的超集,并且尝试访问它们中的任何会给我一个KeyError(除了一个)。当我将不返回 KeyError 的单个键的值保存为新的搁置数据库时,它的大小只有 16 KB,所以我知道数据在 170 MB 文件中,但我无法访问它。
我是不是搞砸了?
此外,我已经制作了数据库的副本并尝试向其中添加更多键(~95)。 那个数据库会说它有三个键,但是当我尝试访问第三个键的值时,我收到以下错误:
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/shelve.py", line 114, in __getitem__
value = Unpickler(f).load()
_pickle.UnpicklingError: invalid load key, ''.
【问题讨论】:
标签: python python-3.x shelve dbm