:mod:`anydbm` ---  DBM 形式のデータベースへの汎用アクセスインタフェース
=======================================================================

.. module:: anydbm
   :synopsis: DBM 形式のデータベースモジュールに対する汎用インタフェース。

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

   :mod:`anydbm` モジュールはPython 3.0では :mod:`dbm` に名前が変更されました。
   :term:`2to3` ツールが自動的に import を変換します。


.. index::
   module: bsddb
   module: dbhash
   module: gdbm
   module: dbm
   module: dumbdbm

:mod:`anydbm` は種々の DBM データベース ---  (:mod:`bsddb` を使う)  :mod:`dbhash` 、
:mod:`gdbm` 、および :mod:`dbm` --- への汎用インタフェースです。これらのモジュールがどれもインストールされていない場合、
:mod:`dumbdbm` モジュールの低速で単純な DBM 実装が使われます。


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

   データベースファイル *filename* を開き、対応するオブジェクトを返します。

   データベースファイルがすでに存在する場合、 :mod:`whichdb` モジュールを使って
   ファイルタイプが判定され、適切なモジュールが使われます;
   既存のデータベースファイルが存在しなかった場合、上に挙げたモジュール中で
   最初にインポートすることができたものが使われます。

   オプションの *flag* は以下の値のいずれかです:

   +---------+-------------------------------------------+
   | 値      | 意味                                      |
   +=========+===========================================+
   | ``'r'`` | 既存のデータベースを読み込み専用で開く    |
   |         | (デフォルト)                              |
   +---------+-------------------------------------------+
   | ``'w'`` | 既存のデータベースを読み書き用に開く      |
   +---------+-------------------------------------------+
   | ``'c'`` | データベースを読み書き用に開く。          |
   |         | ただし存在しない場合には新たに作成する    |
   +---------+-------------------------------------------+
   | ``'n'`` | 常に新たに読み書き用の新規の              |
   |         | データベースを作成する                    |
   +---------+-------------------------------------------+

   この引数が指定されない場合、標準の値は ``'r'`` になります。

   オプションの *mode* 引数は、新たにデータベースを作成しなければならない場合に使われる
   Unix のファイルモードです。標準の値は 8 進数の
   ``0666`` です (この値は現在有効な umask で修飾されます)。


.. exception:: error

   サポートされているモジュールのどれかによって送出されうる例外が収められるタプルで、
   先頭の要素は同じ名前の例外 :exc:`anydbm.error` になっています
   --- :exc:`anydbm.error` が送出された場合、後者が使われます。

:func:`.open` によって返されたオブジェクトは辞書とほとんど同じ同じ機能をサポートします;
キーとそれに対応付けられた値を記憶し、引き出し、削除することができ、
:meth:`has_key` および :meth:`keys` メソッドを使うことができます。キーおよび値は
常に文字列です。

以下の例ではホスト名と対応するタイトルがいくつか登録し、データベースの内容を表示します::

   import anydbm

   # データベースを開く、必要なら作成する
   db = anydbm.open('cache', 'c')

   # いくつかの値を設定する
   db['www.python.org'] = 'Python Website'
   db['www.cnn.com'] = 'Cable News Network'

   # 内容についてループ。
   # .keys(), .values() のような他の辞書メソッドもつかえます。
   for k, v in db.iteritems():
       print k, '\t', v

   # 文字列でないキーまたは値は例外を
   # おこします（ほとんどのばあい TypeErrorです)。
   db['www.yahoo.com'] = 4

   # 終了したらcloseします。
   db.close()


.. seealso::

   Module :mod:`dbhash`
      BSD ``db`` データベースインタフェース。

   Module :mod:`dbm`
      標準の Unix データベースインタフェース。

   Module :mod:`dumbdbm`
      ``dbm`` インタフェースの移植性のある実装。

   Module :mod:`gdbm`
      ``dbm`` インタフェースに基づいた GNU データベースインタフェース。

   Module :mod:`shelve`
      Python ``dbm`` インタフェース上に構築された汎用オブジェクト永続化機構。

   Module :mod:`whichdb`
      既存のデータベースがどの形式のデータベースか判定するユーティリティモジュール。

