11.9。 gdbm —GNUによるdbmの再解釈
このモジュールは dbm モジュールと非常に似ていますが、代わりにgdbm
を使用していくつかの追加機能を提供します。 gdbm
とdbm
で作成されたファイル形式には互換性がないことに注意してください。
gdbm モジュールは、GNUDBMライブラリへのインターフェースを提供します。 gdbm
オブジェクトは、キーと値が常に文字列であることを除いて、マッピング(辞書)のように動作します。 gdbm
オブジェクトを印刷してもキーと値は印刷されず、items()
およびvalues()
メソッドはサポートされていません。
このモジュールは、次の定数と関数を定義します。
- exception gdbm.error
- I / Oエラーなどの
gdbm
固有のエラーで発生します。KeyError
は、誤ったキーの指定などの一般的なマッピングエラーに対して発生します。
- gdbm.open(filename[, flag[, mode]])
gdbm
データベースを開き、gdbm
オブジェクトを返します。 filename 引数は、データベースファイルの名前です。オプションの flag 引数は次のようになります。
価値
意味
'r'
読み取り専用で既存のデータベースを開く(デフォルト)
'w'
読み取りと書き込みのために既存のデータベースを開く
'c'
読み取りと書き込み用にデータベースを開き、データベースが存在しない場合は作成します
'n'
常に新しい空のデータベースを作成し、読み取りと書き込みのために開いてください
データベースを開く方法を制御するために、次の追加文字をフラグに追加できます。
価値
意味
'f'
データベースを高速モードで開きます。 データベースへの書き込みは同期されません。
's'
同期モード。 これにより、データベースへの変更がすぐにファイルに書き込まれます。
'u'
データベースをロックしないでください。
すべてのフラグが
gdbm
のすべてのバージョンで有効であるとは限りません。 モジュール定数open_flags
は、サポートされているフラグ文字の文字列です。 無効なフラグが指定された場合、例外エラーが発生します。オプションの 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
データベースを閉じます。