### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 11. データの永続化 »

# 11.10. `dbhash` — BSD データベースライブラリへの DBM 形式のインタフェース

バージョン 2.6 で撤廃: `dbhash` モジュールは Python 3.0 では削除されます。

`dbhash` モジュールでは BSD `db` ライブラリを使ってデータベースを開くための関数を提供します。このモジュールは、 DBM 形式のデータベースへのアクセスを提供する他の Python データベースモジュールのインタフェースをそのまま反映しています。 `dbhash` を使うには `bsddb` モジュールが必要です。

このモジュールでは一つの例外と一つの関数を提供しています:

exception `dbhash.``error`

  `KeyError` 以外のデータベースのエラーで送出されます。 `bsddb.error` と同じ意味です。

`dbhash.``open`(path[, flag[, mode]])

  データベース `db` を開き、データベースオブジェクトを返します。引数 path はデータベースファイルの名前です。

  flag 引数は、次のいずれかの値になります。

  値 | 意味
  --- | ---
  `'r'` | 既存のデータベースを、読み込み専用で開きます。 (デフォルト)
  `'w'` | 既存のデータベースを、読み書き用に開きます。
  `'c'` | データベースを読み書き用に開きます。存在しない場合は作成します。
  `'n'` | 常に新しい空のデータベースを、読み書き用に開きます。

  BSD `db` ライブラリがロックをサポートしているプラットフォームでは、 flag に `'l'` を追加して、ロックを利用することを指定できます。

  オプションの mode 引数は、新たにデータベースを作成しなければならないときにデータベースファイルに設定すべき Unix ファイル権限ビットを表すために使われます; この値はプロセスの現在の umask 値でマスクされます。

参考

Module `anydbm`
  `dbm` 形式のデータベースへの汎用インタフェース。
Module `bsddb`
  BSD `db` ライブラリへの低レベルインタフェース。
Module `whichdb`
  既存のデータベースがどの形式のデータベースか判定するユーティリティモジュール。

## 11.10.1. データベースオブジェクト

`open()` によって返されるデータベースオブジェクトは、全ての DBM 形式データベースやマップ型オブジェクトで共通のメソッドを提供します。それら標準のメソッドに加えて、以下のメソッドが利用可能です。

`dbhash.``first`()

  このメソッドと `next()` メソッドを使って、データベースの全てのキー/値のペアにわたってループ処理を行えます。探索はデータベースの内部ハッシュ値の順番に行われ、キーの値に順に並んでいるとは限りません。このメソッドは最初のキーを返します。

`dbhash.``last`()

  データベース探索における最後のキー/値を返します。逆順探索を開始する際に使うことができます; `previous()` を参照してください。

`dbhash.``next`()

  データベースの順方向探索において、次のよりも後に来るキー/値のペアを返します。以下のコードはデータベース `db` について、キー全てを含むリストをメモリ上に生成することなく全てのキーを出力します。

      print db.first()
      for i in xrange(1, len(db)):
          print db.next()

`dbhash.``previous`()

  データベースの逆方向探索において、手前に来るキー/値のペアを返します。 `last()` と併せて、逆方向の探索に用いられます。

`dbhash.``sync`()

  このメソッドはディスクにまだ書き込まれていないデータを全て書き込ませます。

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 11. データの永続化 »