11.6. anydbm — 对 DBM 样式数据库的通用访问 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/anydbm
跳转至:导航、​搜索

11.6. 任何数据库 — 对 DBM 样式数据库的通用访问

笔记

anydbm 模块已在 Python 3 中重命名为 dbm2to3 工具将在将您的源代码转换为 Python 3 时自动调整导入。


anydbm 是 DBM 数据库变体的通用接口 - dbhash(需要 bsddb)、gdbm 或 dbm[ X141X]。 如果没有安装这些模块,将使用模块 dumbdbm 中缓慢但简单的实现。

anydbm.open(filename[, flag[, mode]])

打开数据库文件filename,返回一个对应的对象。

如果数据库文件已经存在,则使用whichdb模块来判断其类型并使用相应的模块; 如果它不存在,则使用上面列出的第一个可以导入的模块。

可选的 flag 参数必须是以下值之一:

价值

意义

'r'

以只读方式打开现有数据库(默认)

'w'

打开现有数据库进行读写

'c'

打开数据库进行读写,如果不存在则创建

'n'

总是创建一个新的、空的数据库,以读写方式打开

如果未指定,则默认值为 'r'

可选的 mode 参数是文件的 Unix 模式,仅在必须创建数据库时使用。 它默认为八进制 0666(并将被流行的 umask 修改)。

exception anydbm.error
包含每个受支持模块可以引发的异常的元组,唯一的异常也命名为 anydbm.error 作为第一项——后者在 anydbm.error 时使用被提出。

open() 返回的对象支持大部分与字典相同的功能; 可以存储、检索和删除键及其对应的值,并且可以使用 has_key()keys() 方法。 键和值必须始终是字符串。

下面的例子记录了一些主机名和一个对应的标题,然后打印出数据库的内容:

import anydbm

# Open database, creating it if necessary.
db = anydbm.open('cache', 'c')

# Record some values
db['www.python.org'] = 'Python Website'
db['www.cnn.com'] = 'Cable News Network'

# Loop through contents.  Other dictionary methods
# such as .keys(), .values() also work.
for k, v in db.iteritems():
    print k, '\t', v

# Storing a non-string key or value will raise an exception (most
# likely a TypeError).
db['www.yahoo.com'] = 4

# Close when done.
db.close()

除了类似字典的方法外,anydbm 对象还提供以下方法:

anydbm.close()
关闭 anydbm 数据库。

也可以看看

模块 dbhash
BSD db 数据库接口。
模块 dbm
标准的 Unix 数据库接口。
模块 dumbdbm
dbm 接口的便携式实现。
模块 gdbm
GNU 数据库接口,基于 dbm 接口。
模块 搁架
建立在 Python dbm 接口之上的通用对象持久性。
模块 whichdb
用于确定现有数据库类型的实用程序模块。