QDBM Python binding

QDBMって

QDBMというのは、KeyとValueの組を保存しておくデータベースです。 ま、GDBMやTDBやBerkelay DBやなんかの親戚です。 ベンチマークのレポート(PDF)を見ると結構速いので、なかなか魅力的かな、と。

Python Binding

ということで、PYTHONで使ってみたいな、と思ったのですが、付属のものはrubyやperlだけで、pythonの物はありませんでした。 ネットでも探してのですが、ライブラリになっている物は見つけられなかったので、何となく作ってみました。
SWIGで作ってもよかったのですが、getで取得したメモリを解放してくれなかったり(きっと使い方を分かっていないだけ・・・)でなんとなく気に入らなかったのと、PYTHONの元からあるdictやgdbmと同じように使えるとうれしいかな、といことで、dictとgdbmを参考にしながら(パチくりながら?!)ゴリゴリ作ってみました。 とりあえず、Depotだけですが。

怪しげなところがあったら教えてください。

Download

https://pypi.python.org/pypi/pyqdbm/0.9.6

インストール

必要に応じて、setup.cfgを編集後インストール実行。

python setup.py install

使い方

基本的にopenはdbm風、その他はdictionary風です。

from qdbm import depot

db = depot.open("test.db", "n") # depot.open(ファイル名, フラグ, バケット配列の要素数の目安)

db["apple"] = "red"       # key, valueで登録
db["lemon"] = "black"
db["orange"] = "orange"

db["lemon"] = "yellow"    # 上書き登録

print db["lemon"]   # keyがlemonのvalueを取得

print db.get("orange", "unknown")  # default付きで取得
print db.get("melon", "unknown")   # default付きで取得

print db.keys()               # keyの一覧を取得

for k in db.iterkeys():       # keyのiteratorでぐるぐるまわす
    print k

for k, v in db.iteritems():   # (key, value)のiteratorでぐるぐるまわす
    print k, v

for v in db.itervalues():     # valueのiteratorでぐるぐるまわす
    print v

db.close()                    # 行儀よく終了

depot.openの使い方

depot.open(ファイル名, [フラグ, [バケット配列の要素数の目安]])

フラグの意味は以下の通りです。 省略した場合は"r"です。

フラグ 意味 depotの対応するモード
r 読み取り専用 DP_OREADER
w 読み書き DP_OWRITER
c 読み書き
(無ければ作成)
DP_OWRITER | DP_OCREAT | DP_OSPARSE
n 読み書き
(常に新規作成)
DP_OWRITER | DP_OCREAT | DP_OSPARSE | DP_OTRUNC

HOME