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

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

`open`( | filename[, flag[, mode]])

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

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

  オプションの flag は 既存のデータベースを読み込み専用で開く `'r'`、 既存のデータベースを読み書き用に開く `'w'`、 既存のデータベースが存在しない場合には新たに作成する `'c'`、および 常に新たにデータベースを作成する `'n'` をとることができます。 この引数が指定されない場合、標準の値は `'r'` になります。

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

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

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

参考資料:

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

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

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

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

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

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