11.6. "anydbm" --- DBM 形式のデータベースへの汎用アクセスインタフェース
***********************************************************************

注釈: "anydbm" モジュールはPython 3 では "dbm" に名前が変更されまし
  た。 *2to3* ツールが自動的に import を変換します。

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

anydbm.open(filename[, flag[, mode]])

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

   データベースファイルが既に存在する場合、その種類を決定するために
   "whichdb" モジュールが使用され、適切なモジュールが使用されます; デ
   ータベースファイルが存在しない場合、上記のリストの中でインポート可
   能な最初のモジュールが使用されます。

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

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

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

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

exception anydbm.error

   サポートされているモジュールそれぞれによって送出される可能性のある
   例外を含むタプル。これにはユニークな例外があり、最初の要素として同
   じく "anydbm.error" という名前の例外が含まれます --- "anydbm.error"
   が送出される場合、後者 (訳注:タプルの "anydbm.error" ではなく例外
   "anydbm.error") が使用されます。

"open()" によって返されたオブジェクトは辞書とほとんど同じ機能をサポー
トします; キーとそれに対応付けられた値を記憶し、取り出し、削除すること
ができ、 "has_key()" メソッドと "keys()" メソッドが使えます。キーと値
は常に文字列でなければなりません。

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

   import anydbm

   # Open database, creating it if necessary.
   db = anydbm.open('cache', 'c')

   # Record some values
   db['www.python.org'] = 'Python Website'
   db['www.cnn.com'] = 'Cable News Network'

   # Loop through contents.  Other dictionary methods
   # such as .keys(), .values() also work.
   for k, v in db.iteritems():
       print k, '\t', v

   # Storing a non-string key or value will raise an exception (most
   # likely a TypeError).
   db['www.yahoo.com'] = 4

   # Close when done.
   db.close()

辞書型形式のメソッドに加えて、"anydbm" オブジェクトには以下のメソッド
があります:

anydbm.close()

   "anydbm" データベースをクローズします。

参考:

  "dbhash" モジュール
     BSD "db" データベースインタフェース。

  "dbm" モジュール
     標準の Unix データベースインタフェース。

  "dumbdbm" モジュール
     "dbm" インタフェースの移植性のある実装。

  "gdbm" モジュール
     "dbm" インタフェースに基づいた GNU データベースインタフェース。

  "shelve" モジュール
     Python "dbm" インタフェース上に構築された汎用オブジェクト永続化機
     構。

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