11.6. anydbm
— DBM 形式のデータベースへの汎用アクセスインタフェース¶
anydbm
は種々の DBM データベース — dbhash
(要 bsddb
)、 gdbm
、および dbm
— への汎用インタフェースです。これらのモジュールがどれもインストールされていない場合、 dumbdbm
モジュールの低速で単純な DBM 実装が使われます。
-
anydbm.
open
(filename[, flag[, mode]])¶ データベースファイル filename を開いて対応するオブジェクトを返します。
データベースファイルが既に存在する場合、その種類を決定するために
whichdb
モジュールが使用され、適切なモジュールが使用されます; データベースファイルが存在しない場合、上記のリストの中でインポート可能な最初のモジュールが使用されます。オプションの flag は以下の値のいずれかです:
値
意味 'r'
既存のデータベースを読み込み専用で開く (デフォルト) 'w'
既存のデータベースを読み書き用に開く 'c'
データベースを読み書き用に開く。ただし存在しない場合には新たに作成する 'n'
常に新たに読み書き用の新規のデータベースを作成する この引数が指定されない場合、標準の値は
'r'
になります。オプションの mode 引数は、新たにデータベースを作成しなければならない場合に使われる Unix のファイルモードです。標準の値は 8 進数の
0666
です (この値は現在有効な umask で修飾されます)。
-
exception
anydbm.
error
¶ サポートされているモジュールそれぞれによって送出される可能性のある例外を含むタプル。これにはユニークな例外があり、最初の要素として同じく
anydbm.error
という名前の例外が含まれます —anydbm.error
が送出される場合、後者 (訳注:タプルのanydbm.error
ではなく例外anydbm.error
) が使用されます。
open()
によって返されたオブジェクトは辞書とほとんど同じ機能をサポートします; キーとそれに対応付けられた値を記憶し、取り出し、削除することができ、 has_key()
メソッドと keys()
メソッドが使えます。キーと値は常に文字列でなければなりません。
以下の例ではホスト名と対応するタイトルがいくつか登録し、データベースの内容を表示します:
import anydbm
# Open database, creating it if necessary.
db = anydbm.open('cache', 'c')
# Record some values
db['www.python.org'] = 'Python Website'
db['www.cnn.com'] = 'Cable News Network'
# Loop through contents. Other dictionary methods
# such as .keys(), .values() also work.
for k, v in db.iteritems():
print k, '\t', v
# Storing a non-string key or value will raise an exception (most
# likely a TypeError).
db['www.yahoo.com'] = 4
# Close when done.
db.close()
辞書型形式のメソッドに加えて、anydbm
オブジェクトには以下のメソッドがあります:
-
anydbm.
close
()¶ anydbm
データベースをクローズします。