11.6. anydbm — Generic access to DBM-style databases
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 when anydbm.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.