11.6. anydbm — DBM 形式のデータベースへの汎用アクセスインタフェース — Python 2.7ja1 documentation

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 11. データの永続化 »

# 11.6. `anydbm` — DBM 形式のデータベースへの汎用アクセスインタフェース

ノート

`anydbm` モジュールはPython 3.0では `dbm` に名前が変更されました。 2to3 ツールが自動的に import を変換します。

`anydbm` は種々の DBM データベース — (`bsddb` を使う) `dbhash` 、 `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` が送出された場合、後者が使われます。

`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()

参考

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

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 11. データの永続化 »