:mod:`dbm` --- UNIX dbmのシンプルなインタフェース
=================================================

.. module:: dbm
   :platform: Unix
   :synopsis: ndbmを基にした基本的なデータベースインタフェースです。

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

   :mod:`dbm` モジュールは、Python 3.0では :mod:`dbm.ndbm` に変更されました。
   :term:`2to3` ツールは、自動的に import を修正します。


:mod:`dbm` モジュールはUnixの"(n)dbm"ライブラリのインタフェースを提供します。
dbmオブジェクトは、キーと値が必ず文字列である以外は
辞書オブジェクトのようなふるまいをします。 print文などでdbmインスタンスを出力してもキーと値は出力されません。
また、 :meth:`items` と :meth:`values` メソッドはサポートされません。

このモジュールは、BSD DB、GNU GDBM互換インタフェースを持ったクラシックなndbmインタフェースを使うことができます。
Unix上のビルド時に :program:`configure` スクリプトで適切なヘッダファイルが割り当られます。

以下はこのモジュールの定義:


.. exception:: error

   I/Oエラーのようなdbm特有のエラーが起ったときに上げられる値です。また、正しくないキーが与えられた場合に通常のマッピングエラーのような
   :exc:`KeyError` が発生します。


.. data:: library

   ``ndbm`` が使用している実装ライブラリ名です。


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

   dbmデータベースを開いてdbmオブジェクトを返します。引数 *filename* はデータベースのファイル名を指定します。
   (拡張子 :file:`.dir` や :file:`.pag` は付けません。また、BSD DBは拡張子 :file:`.db` がついたファイルが一つ作成されます。)

   オプション引数 *flag* は次のような値を指定します:

   +---------+----------------------------------------------------------------+
   | Value   | Meaning                                                        |
   +=========+================================================================+
   | ``'r'`` | 存在するデータベースを読取り専用で開きます。(デフォルト)       |
   +---------+----------------------------------------------------------------+
   | ``'w'`` | 存在するデータベースを読み書き可能な状態で開きます。           |
   +---------+----------------------------------------------------------------+
   | ``'c'`` | データベースを読み書き可能な状態で開きます。                   |
   |         | また、データベースが存在しない場合は新たに作成します。         |
   +---------+----------------------------------------------------------------+
   | ``'n'`` | 常に空のデータベースが作成され、読み書き可能な状態で開きます。 |
   +---------+----------------------------------------------------------------+

   オプション引数 *mode* はデータベース作成時に使用される Unixのファイルモードを指定します。
   デフォルトでは8進数の ``0666`` です。(この値はumaskによってマスクされます)


.. seealso::

   Module :mod:`anydbm`
      ``dbm`` スタイルの一般的なインタフェース

   Module :mod:`gdbm`
      GNU GDBMライブラリの類似したインタフェース

   Module :mod:`whichdb`
      存在しているデータベースの形式を決めるためのユーティリティモジュール

