# 7.6 Standard Modules `anydbm` and `dumbdbm`

`anydbm` is a generic interface to variants of the DBM database-DBM, GDBM, or dbhash. If none of these modules is installed, the slow-but-simple implementation in module `dumbdbm` will be used. Both modules provide the same interface:

`open` (filename[, flag, mode])
  Open the database file filename and return a corresponding object. The optional flag argument can be `'r'` to open an existing database for reading only, `'w'` to open an existing database for reading and writing, `'c'` to create the database if it doesn't exist, or `'n'`, which will always create a new empty database. 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).

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.

Both modules also export the exception `error`, which is raised for various problems. The `anydbm.error` exception is simply a different name for the `error` exception of the underlying implementation module used.