7.13.1 ハッシュ、BTree、およびレコードオブジェクト

インスタンス化したハッシュ、B-Tree, およびレコードオブジェクトは 辞書型と同じメソッドをサポートするようになります。加えて、以下に 列挙したメソッドもサポートします。 バージョン 2.3.1 で 変更 された仕様: 辞書型メソッドを追加しました

close( )
データベースの背後にあるファイルを閉じます。オブジェクトはアクセスできなく なります。これらのオブジェクトには oepn メソッドがないため、 再度ファイルを開くためには、新たな bsddb モジュールを開く 関数を呼び出さなくてはなりません。

keys( )
DB ファイルに収められているキーからなるリストを返します。リスト内の キーの順番は決まっておらず、あてにはなりません。特に、異なるファイル 形式の DB 間では返されるリストの順番が異なります。

has_key( key)
引数 key が DB ファイルにキーとして含まれている場合 1 を返します。

set_location( key)
カーソルを key で示される要素に移動し、キー及び値からなる タプルを返します。(bopen を使って開かれる) B-Tree データベースでは、key が実際にはデータベース内に存在しなかった 場合、カーソルは並び順が key の次に来るような要素を指し、 その場所のキー及び値が返されます。 他のデータベースでは、データベース中に key が見つからなかった 場合 KeyError が送出されます。

first( )
カーソルを DB ファイルの最初の要素に設定し、その要素を返します。 B-Tree データベースの場合を除き、ファイル中のキーの順番は決まっていません。 データベースが空の場合、このメソッドは bsddb.error を発生させます。

next( )
カーソルを DB ファイルの次の要素に設定し、その要素を返します。 B-Tree データベースの場合を除き、ファイル中のキーの順番は決まって いません。

previous( )
カーソルを DB ファイルの直前の要素に設定し、その要素を返します。 B-Tree データベースの場合を除き、ファイル中のキーの順番は決まって いません。 (hashopen() で開かれるような) ハッシュ表データベース ではサポートされていません。

last( )
カーソルを DB ファイルの最後の要素に設定し、その要素を返します。 ファイル中のキーの順番は決まっていません。 (hashopen() で開かれるような) ハッシュ表データベース ではサポートされていません。 データベースが空の場合、このメソッドは bsddb.error を発生させます。

sync( )
ディスク上のファイルをデータベースに同期させます。

以下はプログラム例です:

>>> import bsddb
>>> db = bsddb.btopen('/tmp/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
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。