anydbm は種々の DBM データベース -- (bsddb を使う) dbhash 、 gdbm、および dbm -- への汎用インタフェースです。 これらのモジュールがどれもインストールされていない場合、 dumbdbm モジュールの 低速で単純な DBM 実装が使われます。
filename[, flag[, mode]]) |
データベースファイルがすでに存在する場合、whichdb モジュール を使ってファイルタイプが判定され、適切なモジュールが使われます; 既存のデータベースファイルが存在しなかった場合、上に挙げたモジュール中で 最初にインポートすることができたものが使われます。
オプションの flag は
既存のデータベースを読み込み専用で開く 'r'
、
既存のデータベースを読み書き用に開く 'w'
、
既存のデータベースが存在しない場合には新たに作成する 'c'
、および
常に新たにデータベースを作成する 'n'
をとることができます。
この引数が指定されない場合、標準の値は 'r'
になります。
オプションの mode 引数は、新たにデータベースを作成しなければならない
場合に使われる Unix のファイルモードです。標準の値は 8 進数の
0666
です (この値は現在有効な umask で修飾されます)。
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()
参考:
db
データベースインタフェース。.dbm
インタフェースの移植性のある実装。.dbm
インタフェースに基づいた GNU データベースインタフェース。.dbm
インタフェース上に構築された
汎用オブジェクト永続化機構。.ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。