pythonのdbmモジュールを使ってみた
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を使って適当に。