Python 与 Unix 数据库 (dbm) 接口


Python 内置库中的 dbm 包提供了一个类似字典的接口,用于 DBM 风格的数据库。dbm 库是一个简单的数据库引擎,由 Ken Thompson 编写。DBM 代表数据库管理器 (DataBase Manager),用于 Unix 操作系统,该库使用单个键(主键)将任意数据存储在固定大小的桶中,并使用哈希技术通过键快速检索数据。

dbm 包中包含以下模块:

dbm.ndbm 模块提供与 Unix “(n)dbm” 库的接口。Dbm 对象的行为类似于字典,键和值应存储为字节。该模块不支持 items() 和 values() 方法。

dbm.dumb 模块提供了一个持久性字典式接口,完全用 Python 编写。与 dbm.gnu 等其他模块不同,它不需要外部库。与其他持久性映射一样,键和值始终存储为字节。

这些模块在 Python 的 shelve 模块中被内部使用。与 shelve 数据库一样,用户指定的数据库名称带有 '.dir' 后缀。dbm 对象的 whichdb() 函数指示当前 Python 安装中可用的 dbm 实现。

>>> dbm.whichdb('mydbm.db')

‘dbm.dumb’

>>> db = dbm.open('mydbm.db','n')
>>> db['name'] = Rajani Deshmukh'
>>> db['address'] = 'Shivajinagar Pune'
>>> db['PIN'] = '431001'
>>> db.close()

open() 函数允许使用这些标志:

含义
‘r’
以只读方式打开现有数据库(默认)
‘w’
以读写方式打开现有数据库
‘c’
以读写方式打开数据库,如果数据库不存在则创建它
‘n’
始终创建一个新的空数据库,以读写方式打开

dbm 对象类似于字典对象,就像 shelf 对象一样。因此,可以执行所有字典操作。dbm 对象可以调用 get()、pop()、append() 和 update() 方法。以下代码使用 'r' 标志打开 'mydbm.db' 并迭代键值对集合。

>>> db = dbm.open('mydbm.db','r')
>>> for k,v in db.items():
print (k,v)
b'name' : Rajani Deshmukh'
b'address' : b'Shivajinagar Pune'
b'PIN' : b'431001'

dbm 对象还提供以下方法:

**sync():** 同步磁盘上的目录和数据文件。此方法由 Shelve.sync() 方法调用。

**close():** 关闭 dbm 数据库。

gnu dbm 对象具有以下方法:

firstkey()

可以使用此方法和 nextkey() 方法遍历数据库中的每个键。此方法返回起始键。

**gdbm.nextkey(key):** 返回遍历中跟随 key 的键。

**gdbm.reorganize():** 此函数将重新组织数据库。gnu dbm 对象不会缩短数据库文件的长度,除非使用此重新组织功能;否则,已删除的文件空间将被保留并被重新用作添加新的 (键,值) 对。

更新于:2019年7月30日

浏览量:207

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.