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

利用可能な条件: Unix.

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

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

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

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

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

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

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

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

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

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

参考資料:

`anydbm`モジュール:
  `dbm`スタイルの一般的なインタフェース.

`gdbm`モジュール:
  GNU GDBMライブラリの類似したインタフェース.

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