Python 与 Unix 数据库 (dbm) 的接口

pythonserver side programmingprogramming更新于 2024/1/13 4:56:00

Python 内置库中的 dbm 包提供了类似 DBM 风格数据库接口的字典。dbm 库是 Ken Thompson 编写的简单数据库引擎。DBM 代表 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(0 和 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 对象不会缩短数据库文件的长度;否则,已删除的文件空间将被保留并在添加新的(键,值)对时重新使用。


相关文章