# 11.8. `dbm` --- UNIX dbmのシンプルなインタフェース

注釈

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

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

このモジュールは、BSD DB、GNU GDBM 互換インタフェースを持ったクラシックな ndbm インタフェースを使うことができます。 Unix において、このモジュールは configure スクリプトで適切なヘッダファイルの特定が試みられてビルドされます。

このモジュールは以下を定義します:

exception `dbm.``error`

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

`dbm.``library`

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

`dbm.``open`(filename[, flag[, mode]])

  dbm データベースを開いて dbm オブジェクトを返します。引数 filename はデータベースのファイル名を指定します。 (拡張子 `.dir` や `.pag` は付けません。このインターフェイスの BSD DB 実装は拡張子 `.db` を追加して、単一のファイルのみ作ることに注意してください。)

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

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

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

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

  `dbm.``close`()

    `dbm` データベースをクローズします。

参考

`anydbm` モジュール
  `dbm` スタイルの汎用的なインタフェース
`gdbm` モジュール
  GNU GDBM ライブラリに対する同様のインタフェース。
`whichdb` モジュール
  既存のデータベースがどの形式のデータベースか判定するユーティリティモジュール。