首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Berkeley DB( bsddb模块),Python

使用Berkeley DB( bsddb模块),Python
EN

Stack Overflow用户
提问于 2014-03-02 11:14:27
回答 1查看 2.6K关注 0票数 3

我使用python2.7.3和Berkeley DB来存储数据。我只在python中没有找到关于这个模块的多少信息。我看到了一些描述的函数,但我没有看到关于如何从数据库中删除记录的说明。请帮助,如果你知道如何删除一个记录,这可以使用bsddb吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-02 11:25:51

根据文献资料

一旦实例化,哈希、btree和记录对象支持与字典相同的方法。

因此,您可以使用del db_object['key']像字典一样删除特定的记录。

代码语言:javascript
复制
>>> import bsddb
>>> db = bsddb.hashopen('a.db', 'c')
>>> db['a'] = '1'
>>> db.keys()
['a']
>>> del db['a'] # <-----
>>> db.keys()
[]

db_object.pop('key')也能工作。

代码语言:javascript
复制
>>> db['b'] = '2'
>>> db.keys()
['b']
>>> db.pop('b')
'2'

不存在密钥的del.pop()将引发KeyError或类似的异常.如果要忽略不存在的密钥,请使用.pop('key', None)

代码语言:javascript
复制
>>> db.pop('b') # This raises an exception
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/_abcoll.py", line 497, in pop
    value = self[key]
  File "/usr/lib/python2.7/bsddb/__init__.py", line 270, in __getitem__
    return _DeadlockWrap(lambda: self.db[key])  # self.db[key]
  File "/usr/lib/python2.7/bsddb/dbutils.py", line 68, in DeadlockWrap
    return function(*_args, **_kwargs)
  File "/usr/lib/python2.7/bsddb/__init__.py", line 270, in <lambda>
    return _DeadlockWrap(lambda: self.db[key])  # self.db[key]
KeyError: 'b'
>>> db.pop('b', None) # This does not.
>>>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22126836

复制
相关文章

相似问题

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