加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python搁置dbm.error?

发布时间:2020-12-20 13:22:12 所属栏目:Python 来源:网络整理
导读:我正在尝试将一个dicts字典添加到搁置文件中: d = shelve.open('index.shelve') dshelve.DbfilenameShelf object at 0x21965f0 print(list(d.keys()))[] d['index'] = indexTraceback (most recent call last): File "stdin",line 1,in module File "/bns/r
我正在尝试将一个dicts字典添加到搁置文件中:

>>> 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

索引有点大但不是很大.它本质上是一个浮点数组:

>>> 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

这个错误是什么?此外,是否在模块或模块文档中的某处我应该寻找有关错误代表的更多信息?错误信息不是很有用,至少对我来说:).

解决方法

我实际上遇到了与dbm模块相同的问题,它在我的代码库中可以重现,但我无法在隔离测试中重现它.

我的印象是,有一个锁可以防止在读取数据库时写入.在我的情况下,db是?200Kb,有~10个键并且插入time.sleep(1)可以解决问题,暗示在db [key] =值时某些异步进程没有完成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读