13.6 anydbm -- DBM 形式のデータベースへの汎用アクセスインタフェース

anydbm は種々の DBM データベース -- (bsddb を使う) dbhashgdbm、および dbm -- への汎用インタフェースです。 これらのモジュールがどれもインストールされていない場合、 dumbdbm モジュールの 低速で単純な DBM 実装が使われます。

open( filename[, flag[, mode]])
データベースファイル filename を開き、対応するオブジェクトを 返します。

データベースファイルがすでに存在する場合、whichdb モジュール を使ってファイルタイプが判定され、適切なモジュールが使われます; 既存のデータベースファイルが存在しなかった場合、上に挙げたモジュール中で 最初にインポートすることができたものが使われます。

オプションの flag は 既存のデータベースを読み込み専用で開く 'r'、 既存のデータベースを読み書き用に開く 'w'、 既存のデータベースが存在しない場合には新たに作成する 'c'、および 常に新たにデータベースを作成する 'n' をとることができます。 この引数が指定されない場合、標準の値は 'r' になります。

オプションの mode 引数は、新たにデータベースを作成しなければならない 場合に使われる Unix のファイルモードです。標準の値は 8 進数の 0666 です (この値は現在有効な umask で修飾されます)。

exception error
サポートされているモジュールのどれかによって送出されうる例外が 収められるタプルで、先頭の要素は anydbm.error になって います -- anydbm.error が送出された場合、後者が使われます。

open() によって返されたオブジェクトは辞書とほとんど同じ 同じ機能をサポートします; キーとそれに対応付けられた値を 記憶し、引き出し、削除することができ、has_key() および keys() メソッドを使うことができます。キーおよび値は 常に文字列です。

以下の例ではホスト名と対応するタイトルがいくつか登録し、データベースの 内容を表示します:

import anydbm

# データベースを開く、必要なら作成する
db = anydbm.open('cache', 'c')

# いくつかの値を設定する
db['www.python.org'] = 'Python Website'
db['www.cnn.com'] = 'Cable News Network'

# 内容についてループ。
# .keys(), .values() のような他の辞書メソッドもつかえます。
for k, v in db.iteritems():
    print k, '\t', v

# 文字列でないキーまたは値は例外を
# おこします(ほとんどのばあい TypeErrorです)。
db['www.yahoo.com'] = 4

# 終了したらcloseします。
db.close()

参考:

dbhash:モジュール
BSD db データベースインタフェース。.
dbm:モジュール
標準の Unix データベースインタフェース。.
dumbdbm:モジュール
dbm インタフェースの移植性のある実装。.
gdbm:モジュール
dbm インタフェースに基づいた GNU データベースインタフェース。.
shelve:モジュール
Python dbm インタフェース上に構築された 汎用オブジェクト永続化機構。.
whichdb:モジュール
既存のデータベースがどの形式のデータベースか判定する ユーティリティモジュール。.

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。