11.9. gdbm
--- GNU による dbm の再実装¶
このモジュールは dbm
モジュールによく似ていますが、 gdbm
を使っていくつかの追加機能を提供しています。 gdbm
と dbm
では生成されるファイル形式に互換性がないので注意してください。
gdbm
モジュールでは GNU DBM ライブラリへのインタフェースを提供します。 gdbm
オブジェクトはキーと値が常に文字列であることを除き、マップ型 (辞書型) と同じように動作します。 gdbm
オブジェクトに対して print
を適用してもキーや値を印字することはなく、 items()
及び values()
メソッドはサポートされていません。
このモジュールでは以下の定数および関数を定義しています:
-
exception
gdbm.
error
¶ I/O エラーのような
gdbm
特有のエラーで送出されます。誤ったキーの指定のように、一般的なマップ型のエラーに対してはKeyError
が送出されます。
-
gdbm.
open
(filename[, flag[, mode]])¶ gdbm
データベースを開いてgdbm
オブジェクトを返します。 filename 引数はデータベースファイルの名前です。オプションの flag は:
値
意味
'r'
既存のデータベースを読み込み専用で開く (デフォルト)
'w'
既存のデータベースを読み書き用に開く
'c'
データベースを読み書き用に開く。ただし存在しない場合には新たに作成する
'n'
常に新たに読み書き用の新規のデータベースを作成する
以下の追加の文字を flag に追加して、データベースの開きかたを制御することができます:
値
意味
'f'
データベースを高速モードで開きます。書き込みが同期されません。
's'
同期モード。データベースへの変更がすぐにファイルに書き込まれます。
'u'
データベースをロックしません。
全てのバージョンの
gdbm
で全てのフラグが有効とは限りません。モジュール定数open_flags
はサポートされているフラグ文字からなる文字列です。無効なフラグが指定された場合、例外error
が送出されます。オプションの mode 引数は、新たにデータベースを作成しなければならない場合に使われる Unix のファイルモードです。標準の値は 8 進数の
0666
です。
辞書型形式のメソッドに加えて、gdbm
オブジェクトには以下のメソッドがあります:
-
gdbm.
firstkey
()¶ このメソッドと
nextkey()
メソッドを使って、データベースの全てのキーにわたってループ処理を行うことができます。探索はgdbm
の内部ハッシュ値の順番に行われ、キーの値に順に並んでいるとは限りません。このメソッドは最初のキーを返します。
-
gdbm.
nextkey
(key)¶ データベースの順方向探索において、key よりも後に来るキーを返します。以下のコードはデータベース
db
について、キー全てを含むリストをメモリ上に生成することなく全てのキーを出力します:k = db.firstkey() while k != None: print k k = db.nextkey(k)
-
gdbm.
reorganize
()¶ 大量の削除を実行した後、
gdbm
ファイルの占めるスペースを削減したい場合、このルーチンはデータベースを再組織化します。この再組織化を使う以外にgdbm
はデータベースファイルの大きさを短くすることはありません; そうでない場合、削除された部分のファイルスペースは保持され、新たな (キー、値の) ペアが追加される際に再利用されます。
-
gdbm.
sync
()¶ データベースが高速モードで開かれていた場合、このメソッドはディスクにまだ書き込まれていないデータを全て書き込ませます。
-
gdbm.
close
()¶ gdbm
データベースをクローズします。