85 lines · 3.1 KB · TeX
RawDownload
\section{\module{anydbm} ---         Generic access to DBM-style databases} \declaremodule{standard}{anydbm}\modulesynopsis{Generic interface to DBM-style database modules.}  \module{anydbm} is a generic interface to variants of the DBMdatabase --- \refmodule{dbhash}\refstmodindex{dbhash} (requires\refmodule{bsddb}\refbimodindex{bsddb}),\refmodule{gdbm}\refbimodindex{gdbm}, or\refmodule{dbm}\refbimodindex{dbm}.  If none of these modules isinstalled, the slow-but-simple implementation in module\refmodule{dumbdbm}\refstmodindex{dumbdbm} will be used. \begin{funcdesc}{open}{filename\optional{, flag\optional{, mode}}}Open the database file \var{filename} and return a corresponding object. If the database file already exists, the \refmodule{whichdb} module is used to determine its type and the appropriate module is used; if itdoes not exist, the first module listed above that can be imported isused. The optional \var{flag} argument can be\code{'r'} to open an existing database for reading only,\code{'w'} to open an existing database for reading and writing,\code{'c'} to create the database if it doesn't exist, or\code{'n'}, which will always create a new empty database.  If notspecified, the default value is \code{'r'}. The optional \var{mode} argument is the \UNIX{} mode of the file, usedonly when the database has to be created.  It defaults to octal\code{0666} (and will be modified by the prevailing umask).\end{funcdesc} \begin{excdesc}{error}A tuple containing the exceptions that can be raised by each of thesupported modules, with a unique exception \exception{anydbm.error} asthe first item --- the latter is used when \exception{anydbm.error} israised.\end{excdesc} The object returned by \function{open()} supports most of the samefunctionality as dictionaries; keys and their corresponding values canbe stored, retrieved, and deleted, and the \method{has_key()} and\method{keys()} methods are available.  Keys and values must always bestrings. The following example records some hostnames and a corresponding title, and then prints out the contents of the database: \begin{verbatim}import anydbm # Open database, creating it if necessary.db = anydbm.open('cache', 'c') # Record some valuesdb['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()\end{verbatim}  \begin{seealso}  \seemodule{dbhash}{BSD \code{db} database interface.}  \seemodule{dbm}{Standard \UNIX{} database interface.}  \seemodule{dumbdbm}{Portable implementation of the \code{dbm} interface.}  \seemodule{gdbm}{GNU database interface, based on the \code{dbm} interface.}  \seemodule{shelve}{General object persistence built on top of                      the Python \code{dbm} interface.}  \seemodule{whichdb}{Utility module used to determine the type of an                      existing database.}\end{seealso}