11.6. anydbm — Generic access to DBM-style databases - Python 2.7.18 documentation 编辑
Note
The anydbm
module has been renamed to dbm
in Python 3. The 2to3 tool will automatically adapt imports when converting your sources to Python 3.
anydbm
is a generic interface to variants of the DBM database — dbhash
(requires bsddb
), gdbm
, or dbm
. If none of these modules is installed, the slow-but-simple implementation in module dumbdbm
will be used.
anydbm.
open
(filename[, flag[, mode]])Open the database file filename and return a corresponding object.
If the database file already exists, the
whichdb
module is used to determine its type and the appropriate module is used; if it does not exist, the first module listed above that can be imported is used.The optional flag argument must be one of these values:
Value
Meaning
'r'
Open existing database for reading only (default)
'w'
Open existing database for reading and writing
'c'
Open database for reading and writing, creating it if it doesn’t exist
'n'
Always create a new, empty database, open for reading and writing
If not specified, the default value is
'r'
.The optional mode argument is the Unix mode of the file, used only when the database has to be created. It defaults to octal
0666
(and will be modified by the prevailing umask).
- exception
anydbm.
error
A tuple containing the exceptions that can be raised by each of the supported modules, with a unique exception also named
anydbm.error
as the first item — the latter is used whenanydbm.error
is raised.
The object returned by open()
supports most of the same functionality as dictionaries; keys and their corresponding values can be stored, retrieved, and deleted, and the has_key()
and keys()
methods are available. Keys and values must always be strings.
The following example records some hostnames and a corresponding title, and then prints out the contents of the database:
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()
In addition to the dictionary-like methods, anydbm
objects provide the following method:
anydbm.
close
()Close the
anydbm
database.
See also
- Module
dbhash
BSD
db
database interface.- Module
dbm
Standard Unix database interface.
- Module
dumbdbm
Portable implementation of the
dbm
interface.- Module
gdbm
GNU database interface, based on the
dbm
interface.- Module
shelve
General object persistence built on top of the Python
dbm
interface.- Module
whichdb
Utility module used to determine the type of an existing database.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论