anydbm は種々の DBM データベース — (bsddb を使う) dbhash 、 gdbm 、および dbm — への汎用インタフェースです。これらのモジュールがどれもインストールされていない場合、 dumbdbm モジュールの低速で単純な DBM 実装が使われます。
データベースファイル filename を開き、対応するオブジェクトを返します。
データベースファイルがすでに存在する場合、 whichdb モジュールを使ってファイルタイプが判定され、適切なモジュールが使われます; 既存のデータベースファイルが存在しなかった場合、上に挙げたモジュール中で最初にインポートすることができたものが使われます。
オプションの flag は以下の値のいずれかです:
値 | 意味 |
---|---|
'r' | 既存のデータベースを読み込み専用で開く (デフォルト) |
'w' | 既存のデータベースを読み書き用に開く |
'c' | データベースを読み書き用に開く。ただし存在しない場合には新たに作成する |
'n' | 常に新たに読み書き用の新規のデータベースを作成する |
この引数が指定されない場合、標準の値は 'r' になります。
オプションの mode 引数は、新たにデータベースを作成しなければならない場合に使われる Unix のファイルモードです。標準の値は 8 進数の 0666 です (この値は現在有効な umask で修飾されます)。
サポートされているモジュールのどれかによって送出されうる例外が収められるタプルで、先頭の要素は同じ名前の例外 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()