:mod:`dumbdbm` --- Portable DBM implementation
==============================================

.. module:: dumbdbm
   :synopsis: Portable implementation of the simple DBM interface.

.. note::
   The :mod:`dumbdbm` module has been renamed to :mod:`dbm.dumb` in Python 3.
   The :term:`2to3` tool will automatically adapt imports when converting your
   sources to Python 3.

.. index:: single: databases

.. note::

   The :mod:`dumbdbm` module is intended as a last resort fallback for the
   :mod:`anydbm` module when no more robust module is available. The :mod:`dumbdbm`
   module is not written for speed and is not nearly as heavily used as the other
   database modules.

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

The module defines the following:


.. exception:: error

   Raised on dumbdbm-specific errors, such as I/O errors.  :exc:`KeyError` is
   raised for general mapping errors like specifying an incorrect key.


.. function:: open(filename[, flag[, mode]])

   Open a dumbdbm database and return a dumbdbm object.  The *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 *flag* argument is currently ignored; the database is always opened
   for update, and will be created if it does not exist.

   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).

   .. versionchanged:: 2.2
      The *mode* argument was ignored in earlier versions.

In addition to the dictionary-like methods, ``dumbdm`` objects
provide the following method:


.. function:: close()

   Close the ``dumbdm`` database.


.. seealso::

   Module :mod:`anydbm`
      Generic interface to ``dbm``\ -style databases.

   Module :mod:`dbm`
      Similar interface to the DBM/NDBM library.

   Module :mod:`gdbm`
      Similar interface to the GNU GDBM library.

   Module :mod:`shelve`
      Persistence module which stores non-string data.

   Module :mod:`whichdb`
      Utility module used to determine the type of an existing database.


.. _dumbdbm-objects:

Dumbdbm Objects
---------------

In addition to the methods provided by the :class:`UserDict.DictMixin` class,
:class:`~dumbdbm.dumbdbm` objects provide the following methods.


.. method:: dumbdbm.sync()

   Synchronize the on-disk directory and data files.  This method is called by the
   :meth:`sync` method of :class:`Shelve` objects.