##
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 データベースの場合を除き、ファイル中のキーの順番は決まって いません。

`next`( | )

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

`previous`( | )

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

`last`( | )

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

`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