8.7 gdbm -- GNU による dbm の再実装

Unixプラットフォームで利用できます。

このモジュールは dbm モジュールに よく似ていますが、gdbm を使っていくつかの追加機能を提供しています。 gdbmdbm では生成されるファイル形式に互換性がないので 注意してください。

gdbm モジュールでは GNU DBM ライブラリへのインタフェースを 提供します。gdbm オブジェクトはキーと値が常に文字列である ことを除き、マップ型 (辞書型) と同じように動作します。 gdbm オブジェクトに対して print を適用しても キーや値を印字することはなく、items() 及び values() メソッドはサポートされていません。

このモジュールでは以下の定数および関数を定義しています:

exception error
I/O エラーのような gdbm 特有のエラーで送出されます。 誤ったキーの指定のように、一般的なマップ型のエラーに対しては KeyError が送出されます。

open( filename, [flag, [mode]])
gdbm データベースを開いて gdbm オブジェクトを返します。 filename 引数はデータベースファイルの名前です。

オプションの flag としては、 'r' (既存のデータベースを読み込み専用で開く -- 標準の値です)、 'w' (既存のデータベースを読み書き用に開く)、 'c' (既存のデータベースが存在しない場合には新たに作成する)、または 'n' (常に新たにデータベースを作成する)、をとることができます。

データベースをどのように開くかを制御するために、フラグに以下の文字を 追加することができます:

全てのバージョンの gdbm で全てのフラグが有効とは限りません。 モジュール定数 open_flags はサポートされているフラグ文字 からなる文字列です。無効なフラグが指定された場合、例外 error が送出されます。

オプションの mode 引数は、新たにデータベースを作成しなければならない 場合に使われる Unix のファイルモードです。標準の値は 8 進数の 0666 です。

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

firstkey( )
このメソッドと next() メソッドを使って、データベースの全ての キーにわたってループ処理を行うことができます。探索は gdbm の 内部ハッシュ値の順番に行われ、キーの値に順に並んでいるとは限りません。 このメソッドは最初のキーを返します。

nextkey( key)
データベースの順方向探索において、key よりも後に来るキーを 返します。以下のコードはデータベース db に ついて、キー全てを含むリストをメモリ上に生成することなく 全てのキーを出力します:

k = db.firstkey()
while k != None:
    print k
    k = db.nextkey(k)

reorganize( )
大量の削除を実行した後、gdbm ファイルの占めるスペースを 削減したい場合、このルーチンはデータベースを再組織化します。 この再組織化を使う以外に gdbm はデータベースファイルの 大きさを短くすることはありません; そうでない場合、削除された 部分のファイルスペースは保持され、新たな (キー、値の) ペアが追加 される際に再利用されます。

sync( )
データベースが高速モードで開かれていた場合、このメソッドは ディスクにまだ書き込まれていないデータを全て書き込ませます。

参考:

anydbm:モジュール
dbm 形式のデータベースへの汎用インタフェース。.
whichdb:モジュール
既存のデータベースがどの形式のデータベースか判定する ユーティリティモジュール。.
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。