# 11.12. `dumbdbm` --- 可搬性のある DBM 実装

注釈

`dumbdbm` モジュールは、Python 3 では `dbm.dumb` にリネームされました。 2to3 ツールが自動的にソースコードの import を修正します。

注釈

`dumbdbm` モジュールは、 `anydbm` が安定なモジュールを他に見つけることができなかった際の最後の手段とされています。 `dumbdbm` モジュールは速度を重視して書かれているわけではなく、他のデータベースモジュールのように重い使い方をするためのものではありません。

`dumbdbm` モジュールは永続的で辞書に類似したインタフェースを提供し、全て Python で書かれています。 `gdbm` や `bsddb` といったモジュールと異なり、外部ライブラリは必要ありません。他の永続性マップ型のように、キーおよび値は常に文字列でなければなりません。

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

exception `dumbdbm.``error`

  I/O エラーのような dumbdbm 特有のエラーの際に送出されます。不正なキーを指定したときのような、一般的な対応付けエラーの際には `KeyError` が送出されます。

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

  dumbdbm データベースを開き、 dubmdbm オブジェクトを返します。 filename 引数はデータベースファイル名のベース名 (特定の拡張子をもたないもの) です。dumbdbm データベースが生成される際、 `.dat` および `.dir` の拡張子を持ったファイルが生成されます。

  オプションの flag 引数は現状では無視されます; データベースは常に更新のために開かれ、存在しない場合には新たに作成されます。

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

  バージョン 2.2 で変更: mode 引数は以前のバージョンでは無視されます.

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

`dumbdbm.``close`()

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

参考

`anydbm` モジュール
  `dbm` スタイルの汎用的なインタフェース
`dbm` モジュール
  DBM/NDBM ライブラリに対する同様のインタフェース。
`gdbm` モジュール
  GNU GDBM ライブラリの類似したインタフェース
`shelve` モジュール
  非文字列データを記録する永続化モジュール。
`whichdb` モジュール
  既存のデータベースがどの形式のデータベースか判定するユーティリティモジュール。

## 11.12.1. Dumbdbm オブジェクト

`UserDict.DictMixin` クラスで提供されているメソッドに加え、 `dumbdbm` オブジェクトでは以下のメソッドを提供しています。

`dumbdbm.``sync`()

  ディスク上の辞書とデータファイルを同期します。このメソッドは `Shelve` オブジェクトの `sync()` メソッドから呼び出されます。