\section{\module{dumbdbm} ---
         Portable DBM implementation}

\declaremodule{standard}{dumbdbm}
\modulesynopsis{Portable implementation of the simple DBM interface.}

\index{databases}

\begin{notice}
The \module{dumbdbm} module is intended as a last resort fallback for
the \refmodule{anydbm} module when no more robust module is available.
The \module{dumbdbm} module is not written for speed and is not nearly as
heavily used as the other database modules.
\end{notice}

The \module{dumbdbm} module provides a persistent dictionary-like interface
which is written entirely in Python.  Unlike other modules such as
\refmodule{gdbm} and \refmodule{bsddb}, no external library is required.  As
with other persistent mappings, the keys and values must always be strings.

The module defines the following:

\begin{excdesc}{error}
Raised on dumbdbm-specific errors, such as I/O errors.  \exception{KeyError}
is raised for general mapping errors like specifying an incorrect key.
\end{excdesc}

\begin{funcdesc}{open}{filename\optional{, flag\optional{, mode}}}
Open a dumbdbm database and return a dumbdbm object.  The \var{filename}
argument is the basename of the database file (without any specific
extensions).  When a dumbdbm database is created, files with \file{.dat} and
\file{.dir} extensions are created.

The optional \var{flag} argument is currently ignored; the database is
always opened for update, and will be created if it does not exist.

The optional \var{mode} argument is the \UNIX{} mode of the file, used
only when the database has to be created.  It defaults to octal
\code{0666} (and will be modified by the prevailing umask).
\versionchanged[The \var{mode} argument was ignored in earlier
                versions]{2.2}
\end{funcdesc}


\begin{seealso}
  \seemodule{anydbm}{Generic interface to \code{dbm}-style databases.}
  \seemodule{dbm}{Similar interface to the DBM/NDBM library.}
  \seemodule{gdbm}{Similar interface to the GNU GDBM library.}
  \seemodule{shelve}{Persistence module which stores non-string data.}
  \seemodule{whichdb}{Utility module used to determine the type of an
                      existing database.}
\end{seealso}


\subsection{Dumbdbm Objects \label{dumbdbm-objects}}

In addition to the methods provided by the \class{UserDict.DictMixin} class,
\class{dumbdbm} objects provide the following methods.

\begin{methoddesc}[dumbdbm]{sync}{}
Synchronize the on-disk directory and data files.  This method is called by
the \method{sync} method of \class{Shelve} objects.
\end{methoddesc}
