# 13 `bsddb` -- Berkeley DB ライブラリへのインタフェース

Unix, Windowsプラットフォームで利用できます。

`bsddb` モジュールは Berkeley DB ライブラリへのインタフェース を提供します。ユーザは適当な `open` 呼び出しを使うことで、 ハッシュ、B-Tree、 またはレコードに基づくデータベースファイルを生成 することができます。bsddb オブジェクトは辞書と大体同じように振る舞い ます。しかし、キー及び値は文字列でなければならないので、 他のオブジェクトをキーとして使ったり、他の種のオブジェクトを記録 したい場合、それらのデータを何らかの方法で直列化しなければなりません。 これには通常 marshal.dumps や pickle.dumps が使われます。

バージョン 3.2以降の Berkeley DB ライブラリのみをサポートしています。 (現時点では、3.2 から4.2 までのバージョンでの動作を確認しています。)

参考:

http://pybsddb.sourceforge.net/
  新しいBerkeley DBインターフ ェースのドキュメントがあります。新しいインターフェースは、Berkeley DB 3と4でsleepycatが提供しているオブジェクト指向インターフェースとほぼ 同じインターフェースとなっています。

http://www.sleepycat.com/
  Sleepycat Software は、最新の Berkeley DBライブラリを開発しています。

以下では、従来のbsddbモジュールと互換性のある、古いインターフェースを解 説しています。現在の、Db と DbEnvによるオブジェクト指向的インターフェー スについては上記 pybsddb のURLを参照してください。

`bsddb` モジュールでは、適切な形式の Berkeley DB ファイルに アクセスするオブジェクトを生成する以下の関数を定義しています。 各関数の最初の二つの引数は同じです。可搬性のために、ほとんどの インスタンスでは最初の二つの引数だけが使われているはずです。

`hashopen`( | filename[, flag[, mode[, bsize[, ffactor[, nelem[, cachesize[, hash[, lorder]]]]]]]])

  filename と名づけられたハッシュ形式のファイルを開きます。 filename に `None` を指定することで、ディスクに保存する つもりがないファイルを生成することもできます。 オプションの flag には、ファイルを開くためのモードを指定します。 このモードは "`r`" (読み出し専用), "`w`" (読み書き可能)、 "`c`" (読み書き可能 - 必要ならファイルを生成 … これがデフォルトです) または "`n`" (読み書き可能 - ファイル長を 0 に切り詰め)、にすることが できます。他の引数はほとんど使われることはなく、下位レベルの `dbopen()` 関数に渡されるだけです。他の引数の使い方 およびその解釈については Berkeley DB のドキュメントを読んで下さい。

`btopen`( | filename[, flag[, mode[, btflags[, cachesize[, maxkeypage[, minkeypage[, psize[, lorder]]]]]]]])

  filename と名づけられた B-Tree 形式のファイルを開きます。 filename に `None` を指定することで、ディスクに保存する つもりがないファイルを生成することもできます。 オプションの flag には、ファイルを開くためのモードを指定します。 このモードは "`r`" (読み出し専用)、 "`w`" (読み書き可能)、 "`c`" (読み書き可能 - 必要ならファイルを生成 … これがデフォルトです)、または "`n`" (読み書き可能 - ファイル長を 0 に切り詰め)、にすることが できます。他の引数はほとんど使われることはなく、下位レベルの `dbopen()` 関数に渡されるだけです。他の引数の使い方 およびその解釈については Berkeley DB のドキュメントを読んで下さい。

`rnopen`( | filename[, flag[, mode[, rnflags[, cachesize[, psize[, lorder[, reclen[, bval[, bfname]]]]]]]]])

  filename と名づけられた DB レコード形式のファイルを開きます、 filename に `None` を指定することで、ディスクに保存する つもりがないファイルを生成することもできます、 オプションの flag には、ファイルを開くためのモードを指定します、 このモードは "`r`" (読み出し専用), "`w`" (読み書き可能)、 "`c`" (読み書き可能 - 必要ならファイルを生成 … これがデフォルトです)、または "`n`" (読み書き可能 - ファイル長を 0 に切り詰め)、にすることが できます。他の引数はほとんど使われることはなく、下位レベルの `dbopen()` 関数に渡されるだけです、他の引数の使い方 およびその解釈については Berkeley DB のドキュメントを読んで下さい。

注意: 2.3以降のUnix版Pythonには、`bsddb185`モジュールが存在する場合があ ります。このモジュールは古いBerkeley DB 1.85データベースライブラリを持つ システムをサポートするためだけに存在しています。新規に開発する コードでは、`bsddb185`を直接使用しないで下さい。

参考:

`dbhash`:モジュール
  `bsddb` への DBM 形式のインタフェース.