BlankTar

about | blog | works | photo

pythonは二種類のデータベースを標準ライブラリで扱うことが出来ます。
一つがご存知sqlite3。前に使い方書いたやつね。これ
もう一つが今回使うdbmってやつ。
sqlite3はご存知のとおりSQL。リレーショナルデータベースです。
それに対してdbmはkey-value型のデータベース。つまりはpythonのdict型みたいに扱えるのね。
値に対する制限がちょっと厳しいけれど、その分簡単に使える感じ。
データベース操作言語を覚える必要もないしね。

データベースを開く/作る

import dbm

d = dbm.open('file', 'w')
これで読み書き可能な状態でデータベースを開くします。
ちなみに、ファイルが存在しなければdbm.errorが送出されます。
python2.xなら拡張子は勝手につけられるので必要ないです。

ご想像のとおり
d = dbm.open('file', 'r')
とすれば、読み出し専用で開かれます。
ファイルが存在しない場合はやっぱりdbm.errorが送出されます。

他にもモードがあって、'c'なら'w'と同じで、ただし存在しない場合は新規作成。
'n'なら常に上書きして作成するようになります。

読み書きしてみる

ファイルを開いたら早速読み書き。
て言っても基本はdict型と同じです。
import dbm
d = dbm.open('file', 'c')

d['a'] = '0'
d['b'] = '10'
d['c'] = '20'

print d['a'], d['b'], d['c']
# output: 0 10 20

print 'a' in d
# output: True

print d.keys()
# output: ['a', 'b', 'c']
こんな感じ。分かりやすくて良いよね。
注意しなきゃいけないのは、文字列(3.xならbytes)しか受け付けてくれないこと。
数字も文字列にしてから入れましょう。
そこだけ注意すればあとはたぶん大丈夫。

あ、あとvaluesとかitemsとかのメソッドがないからね。keysを使って適当に。
< pythonのpyevolveで遺伝的アルゴリズム。 pythonの三項演算子 >