首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bsddb

自2.6版以来已弃用:该bsddb模块已在Python 3中删除。

bsddb模块为Berkeley DB库提供了一个接口。用户可以使用适当的公开呼叫创建哈希,btree或基于记录的库文件。Bsddb对象的行为通常与字典类似。但是,键和值必须是字符串,因此要将其他对象用作键或存储其他类型的对象,用户必须以某种方式将它们序列化,通常使用marshal.dumps()pickle.dumps()

bsddb模块需要从4.0到4.7的Berkeley DB库版本。

模块中提供了更现代的DB,DBEnv和DBSequence对象接口,bsddb.db它与上述URL中记录的Berkeley DB C API密切匹配。bsddb.dbAPI 提供的其他功能包括微调,事务处理,日志记录和多进程并发数据库访问。

以下是bsddb与旧的Python bsddb模块兼容的旧界面的描述。从Python 2.5开始,此接口对于多线程访问应该是安全的。该bsddb.dbAPI推荐用于线程用户,因为它提供了更好的控制。

bsddb模块定义了以下函数,用于创建访问适当类型的Berkeley DB文件的对象。每个函数的前两个参数是相同的。为了便于携带,大多数情况下只应使用前两个参数。

bsddb.hashopen(filename[, flag[, mode[, pgsize[, ffactor[, nelem[, cachesize[, lorder[, hflags]]]]]]]])

打开名为filename的哈希格式文件。从不打算保存在磁盘上None文件可以通过传递作为文件名来创建。可选标志标识用于打开文件的模式。它可以是'r'(只读),'w'(读写),'c'(读写 - 如果需要则创建;默认)或'n'(读写 - 截断为零长度)。其他参数很少使用,只传递给低级dbopen()函数。请参阅Berkeley DB文档以获取它们的使用和解释。

bsddb.btopen(filename[, flag[, mode[, btflags[, cachesize[, maxkeypage[, minkeypage[, pgsize[, lorder]]]]]]]])

打开名为filename的btree格式文件。从不打算保存在磁盘上None文件可以通过传递作为文件名来创建。可选标志标识用于打开文件的模式。它可以是'r'(只读),'w'(读写),'c'(读写 - 如果需要则创建;默认)或'n'(读写 - 截断为零长度)。其他参数很少使用,只传递给低级dbopen函数。请参阅Berkeley DB文档以获取它们的使用和解释。

bsddb.rnopen(filename[, flag[, mode[, rnflags[, cachesize[, pgsize[, lorder[, rlen[, delim[, source[, pad]]]]]]]]]])

打开一个名为filename的DB记录格式文件。从不打算保存在磁盘上None文件可以通过传递作为文件名来创建。可选标志标识用于打开文件的模式。它可以是'r'(只读),'w'(读写),'c'(读写 - 如果需要则创建;默认)或'n'(读写 - 截断为零长度)。其他参数很少使用,只传递给低级dbopen函数。请参阅Berkeley DB文档以获取它们的使用和解释。

注释

从2.3开始,Python的某些Unix版本可能有一个bsddb185模块。这只是为了允许与旧Berkeley DB 1.85数据库附带的系统向后兼容。bsddb185不应该直接在新代码中使用该模块。该模块已在Python 3中删除。如果您发现您仍然需要它,请查看PyPI。

1.哈希,BTree和记录对象

一旦实例化,哈希,btree和记录对象支持与字典相同的方法。另外,他们支持下面列出的方法。

在版本2.3.1中进行了更改:添加了字典方法。

bsddbobject.close()

关闭底层文件。该对象不能再被访问。由于open()这些对象没有开放的方法,所以要再次打开文件,bsddb必须调用一个新的模块打开函数。

bsddbobject.keys()

返回DB文件中包含的密钥列表。列表的顺序是未指定的,不应该依赖。特别是,对于不同的文件格式,返回列表的顺序是不同的。

bsddbobject.has_key(key)

返回1如果DB文件中包含的参数作为重点。

bsddbobject.set_location(key)

将游标设置为key所指示的项目并返回包含该键及其值的元组。对于使用二进制树数据库的数据库btopen(),如果key实际上不存在于数据库中,则游标将按照排序顺序指向下一个项目并返回该键和值。对于其他数据库,KeyError如果在数据库中找不到密钥,则会引发其他数据库。

bsddbobject.first()

将光标设置为DB文件中的第一项并返回。除B-Tree数据库外,文件中键的顺序是未指定的。bsddb.error如果数据库为空,则引发此方法。

bsddbobject.next()

将光标设置为DB文件中的下一个项目并将其返回。除B-Tree数据库外,文件中键的顺序是未指定的。

bsddbobject.previous()

将光标设置到数据库文件中的前一项并返回。除B-Tree数据库外,文件中键的顺序是未指定的。这在散列表数据库(打开的数据库hashopen())上不受支持。

bsddbobject.last()

将光标设置为DB文件中的最后一项并返回。文件中的键的顺序是未指定的。这在散列表数据库(打开的数据库hashopen())上不受支持。bsddb.error如果数据库为空,则引发此方法。

bsddbobject.sync()

在磁盘上同步数据库。

例:

代码语言:javascript
复制
>>> import bsddb
>>> db = bsddb.btopen('spam.db', 'c')
>>> for i in range(10): db['%d'%i] = '%d'% (i*i)
...
>>> db['3']
'9'
>>> db.keys()
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> db.first()
('0', '0')
>>> db.next()
('1', '1')
>>> db.last()
('9', '81')
>>> db.set_location('2')
('2', '4')
>>> db.previous()
('1', '1')
>>> for k, v in db.iteritems():
...     print k, v
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
>>> '8' in db
True
>>> db.sync()
0

扫码关注腾讯云开发者

领取腾讯云代金券