On this page
11.6. anydbm-对 DBM 样式数据库的通用访问
anydbm是 DBM 数据库变体dbhash(需要bsddb),gdbm或dbm的通用接口。如果未安装这些模块,则将使用模块dumbdbm中的缓慢但简单的实现。
anydbm.
open
(* filename * [,* flag * [,* mode *]])- 打开数据库文件文件名并返回相应的对象。
如果数据库文件已经存在,则使用whichdb模块确定其类型,并使用适当的模块;如果不存在,则使用上面列出的第一个可以导入的模块。
可选的* flag *参数必须是以下值之一:
Value | Meaning |
---|---|
'r' |
打开现有数据库以只读(默认) |
'w' |
打开现有数据库进行读写 |
'c' |
打开数据库进行读写,如果不存在则创建数据库 |
'n' |
始终创建一个新的空数据库,以供读取和写入 |
如果未指定,则默认值为'r'
。
可选的* mode *参数是文件的 Unix 模式,仅在必须创建数据库时使用。它的默认值为八进制的0666
(并且会被当前的 umask 修改)。
- exception
anydbm.
error
- 一个 Tuples,其中包含每个受支持模块均可引发的异常,并且唯一异常也称为anydbm.error作为第一项,而引发anydbm.error则使用后者。
open()返回的对象支持与字典相同的大多数Function;键及其对应的值可以存储,检索和删除,并且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
数据库。
- 关闭