11.11. bsddb — Berkeley DBライブラリへのインターフェース—Pythonドキュメント

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

11.11。 bsddb — BerkeleyDBライブラリへのインターフェイス

バージョン2.6以降非推奨: bsddb モジュールはPython3で削除されました。


bsddb モジュールは、BerkeleyDBライブラリへのインターフェイスを提供します。 ユーザーは、適切なオープンコールを使用して、ハッシュ、Bツリー、またはレコードベースのライブラリファイルを作成できます。 Bsddbオブジェクトは、一般的に辞書のように動作します。 ただし、キーと値は文字列である必要があるため、他のオブジェクトをキーとして使用したり、他の種類のオブジェクトを格納したりするには、通常、 marshal.dumps()または pickle.dumpsを使用してそれらをシリアル化する必要があります。 ()

bsddb モジュールには、4.0から4.7までのBerkeleyDBライブラリバージョンが必要です。

も参照してください

http://www.jcea.es/programacion/pybsddb.htm
Berkeley DB4.x自体で提供されるオブジェクト指向インターフェースを厳密に反映するbsddb.db Python BerkeleyDBインターフェースのドキュメントを掲載したWebサイト。
http://www.oracle.com/database/berkeley-db/
BerkeleyDBライブラリ。


より最新のDB、DBEnv、およびDBSequenceオブジェクトインターフェイスは、上記のURLに記載されているBerkeley DB CAPIと厳密に一致するbsddb.dbモジュールで利用できます。 bsddb.db APIによって提供される追加機能には、微調整、トランザクション、ロギング、およびマルチプロセス同時データベースアクセスが含まれます。

以下は、古いPythonbsddbモジュールと互換性のあるレガシー bsddb インターフェースの説明です。 Python 2.5以降、このインターフェイスはマルチスレッドアクセスに対して安全である必要があります。 bsddb.db APIは、より適切な制御を提供するため、スレッドユーザーに推奨されます。

bsddb モジュールは、適切なタイプのBerkeleyDBファイルにアクセスするオブジェクトを作成する次の関数を定義します。 各関数の最初の2つの引数は同じです。 移植性を容易にするために、ほとんどの場合、最初の2つの引数のみを使用する必要があります。

bsddb.hashopen(filename[, flag[, mode[, pgsize[, ffactor[, nelem[, cachesize[, lorder[, hflags]]]]]]]])
filename という名前のハッシュ形式ファイルを開きます。 Noneファイル名として渡すことにより、ディスクに保存することを意図していないファイルを作成できます。 オプションのフラグは、ファイルを開くために使用されるモードを識別します。 'r'(読み取り専用)、'w'(読み取り/書き込み)、'c'(読み取り/書き込み-必要に応じて作成、デフォルト)、または [X122X ](読み取り/書き込み-長さをゼロに切り捨てます)。 他の引数はめったに使用されず、低レベルのdbopen()関数に渡されるだけです。 それらの使用と解釈については、BerkeleyDBのドキュメントを参照してください。
bsddb.btopen(filename[, flag[, mode[, btflags[, cachesize[, maxkeypage[, minkeypage[, pgsize[, lorder]]]]]]]])
filename という名前のbtree形式のファイルを開きます。 Noneファイル名として渡すことにより、ディスクに保存することを意図していないファイルを作成できます。 オプションのフラグは、ファイルを開くために使用されるモードを識別します。 'r'(読み取り専用)、'w'(読み取り/書き込み)、'c'(読み取り/書き込み-必要に応じて作成、デフォルト)、または [X122X ](読み取り/書き込み-長さをゼロに切り捨てます)。 他の引数はめったに使用されず、低レベルのdbopen関数に渡されるだけです。 それらの使用と解釈については、BerkeleyDBのドキュメントを参照してください。
bsddb.rnopen(filename[, flag[, mode[, rnflags[, cachesize[, pgsize[, lorder[, rlen[, delim[, source[, pad]]]]]]]]]])
filename という名前のDBレコード形式ファイルを開きます。 Noneファイル名として渡すことにより、ディスクに保存することを意図していないファイルを作成できます。 オプションのフラグは、ファイルを開くために使用されるモードを識別します。 'r'(読み取り専用)、'w'(読み取り/書き込み)、'c'(読み取り/書き込み-必要に応じて作成、デフォルト)、または [X122X ](読み取り/書き込み-長さをゼロに切り捨てます)。 他の引数はめったに使用されず、低レベルのdbopen関数に渡されるだけです。 それらの使用と解釈については、BerkeleyDBのドキュメントを参照してください。

ノート

2.3以降、一部のUnixバージョンのPythonにはbsddb185モジュールが含まれる場合があります。 これはのみに存在し、古いBerkeley DB1.85データベースライブラリに付属するシステムとの下位互換性を可能にします。 bsddb185モジュールを新しいコードで直接使用しないでください。 モジュールはPython3で削除されました。 それでも必要な場合は、PyPIを調べてください。


も参照してください

モジュール dbhash
bsddb へのDBMスタイルのインターフェース


11.11.1。 ハッシュ、BTree、レコードオブジェクト

インスタンス化されると、ハッシュ、btree、およびレコードオブジェクトは、ディクショナリと同じメソッドをサポートします。 さらに、以下の方法をサポートしています。

バージョン2.3.1で変更:辞書メソッドが追加されました。


bsddbobject.close()
基になるファイルを閉じます。 オブジェクトにアクセスできなくなります。 これらのオブジェクトにはopen open()メソッドがないため、ファイルを再度開くには、新しい bsddb モジュールのopen関数を呼び出す必要があります。
bsddbobject.keys()
DBファイルに含まれているキーのリストを返します。 リストの順序は指定されていないため、信頼しないでください。 特に、返されるリストの順序は、ファイル形式によって異なります。
bsddbobject.has_key(key)
DBファイルに引数がキーとして含まれている場合は、1を返します。
bsddbobject.set_location(key)
key で示された項目にカーソルを合わせ、キーとその値を含むタプルを返します。 バイナリツリーデータベース( btopen()を使用して開く)の場合、キーが実際にデータベースに存在しない場合、カーソルはソートされた順序で次のアイテムを指し、そのキーを返します。価値。 他のデータベースでは、キーがデータベースに見つからない場合、KeyErrorが発生します。
bsddbobject.first()
DBファイルの最初の項目にカーソルを合わせて返します。 B-Treeデータベースの場合を除いて、ファイル内のキーの順序は指定されていません。 このメソッドは、データベースが空の場合にbsddb.errorを発生させます。
bsddbobject.next()
DBファイルの次の項目にカーソルを合わせて返します。 B-Treeデータベースの場合を除いて、ファイル内のキーの順序は指定されていません。
bsddbobject.previous()
DBファイルの前の項目にカーソルを合わせて戻します。 B-Treeデータベースの場合を除いて、ファイル内のキーの順序は指定されていません。 これは、ハッシュテーブルデータベース( hashopen()で開かれたデータベース)ではサポートされていません。
bsddbobject.last()
DBファイルの最後の項目にカーソルを合わせて返します。 ファイル内のキーの順序は指定されていません。 これは、ハッシュテーブルデータベース( hashopen()で開かれたデータベース)ではサポートされていません。 このメソッドは、データベースが空の場合にbsddb.errorを発生させます。
bsddbobject.sync()
ディスク上のデータベースを同期します。

例:

>>> import bsddb
>>> db = bsddb.btopen('spam.db', 'c')
>>> for i in range(10): db['%d'%i] = '%d'% (i*i)
...
>>> db['3']
'9'
>>> db.keys()
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> db.first()
('0', '0')
>>> db.next()
('1', '1')
>>> db.last()
('9', '81')
>>> db.set_location('2')
('2', '4')
>>> db.previous()
('1', '1')
>>> for k, v in db.iteritems():
...     print k, v
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
>>> '8' in db
True
>>> db.sync()
0