首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python shelve dbm.error?

python shelve dbm.error?
EN

Stack Overflow用户
提问于 2011-02-15 01:24:44
回答 1查看 1.9K关注 0票数 5

我正在尝试将字典添加到搁置文件中:

代码语言:javascript
复制
>>> d = shelve.open('index.shelve')
>>> d
<shelve.DbfilenameShelf object at 0x21965f0>
>>> print(list(d.keys()))
[]
>>> d['index'] = index
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/bns/rma/local/python/lib/python3.1/shelve.py", line 124, in __setitem__
    self.dict[key.encode(self.keyencoding)] = f.getvalue()
_dbm.error: cannot add item to database

索引有点大,但并不大。它本质上是一个浮点数组:

代码语言:javascript
复制
>>> len(index)
219
>>> a = [ index[k][k1] for k in index for k1 in index[k] ]
>>> len(a)
59995
>>> all([ type(x) is float for x in a ])
True

这是什么错误?另外,在模块或模块文档中,有没有我应该查看的关于错误代表的更多信息?至少对我来说,这个错误消息的信息量不大:)。

EN

回答 1

Stack Overflow用户

发布于 2012-08-29 04:37:54

实际上,我的dbm模块也有同样的问题,它可以在我的代码库中重现,但我不能在单独的测试中重现它。

我的印象是,在读取数据库时,有一个阻止写入的锁。在我的例子中,db是~200Kb,有~10个密钥,插入一个time.sleep(1)就可以解决这个问题,这暗示着在执行db[key] = value时某些异步进程尚未完成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4995162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档