11.9. gdbm — GNUによるdbmの再解釈—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/gdbm
移動先:案内検索

11.9。 gdbm —GNUによるdbmの再解釈

ノート

gdbm モジュールは、Python3でdbm.gnuに名前が変更されました。 2to3 ツールは、ソースをPython 3に変換するときに、インポートを自動的に適応させます。


このモジュールは dbm モジュールと非常に似ていますが、代わりにgdbmを使用していくつかの追加機能を提供します。 gdbmdbmで作成されたファイル形式には互換性がないことに注意してください。

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データベースを閉じます。

も参照してください

モジュール anydbm
dbmスタイルのデータベースへの汎用インターフェース。
モジュール whichdb
既存のデータベースのタイプを判別するために使用されるユーティリティモジュール。