我正在使用python 2.7.3和Berkeley DB来存储数据。我没有找到关于该模块的更多信息,仅在python docks中。我看到有一些功能描述,但我没有看到如何从数据库中删除记录的说明。请帮忙,如果你知道如何删除记录,那可以使用bsddb吗?
答案 0 :(得分:2)
实例化后,哈希,btree和记录对象支持与词典相同的方法。
因此,您可以使用del db_object['key']
删除特定记录,如字典。
>>> import bsddb
>>> db = bsddb.hashopen('a.db', 'c')
>>> db['a'] = '1'
>>> db.keys()
['a']
>>> del db['a'] # <-----
>>> db.keys()
[]
db_object.pop('key')
也有效。
>>> db['b'] = '2'
>>> db.keys()
['b']
>>> db.pop('b')
'2'
del
,.pop()
使用不存在的密钥会引发KeyError
或类似的异常。如果要忽略不存在的密钥,请使用.pop('key', None)
:
>>> 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.
>>>