0

次のように、ハッシュアクセスメソッドを使用してBerkeleyDBを作成しようとしています。

>>> from bsddb3 import db
>>> dben = DB()
>>> dben.open("filename", None, db.DB_HASH, db.DB_CREATE)

ただし、エントリを挿入しようとすると、何も機能しません。

>>> dben.put(3,2)

結果は

トレースバック(最後の最後の呼び出し):ファイル ""、1行目、dben.put(3,2)TypeError:整数キーはRecnoおよびQueueDBでのみ許可されます

しようとしています

>>> dben[2] = 1

同じエラーが発生します。

ハッシュBerkeleyDBにエントリを追加するにはどうすればよいですか?

オートコンプリートにcntrl-spaceを使用すると、関連するメソッドが表示されません。同じことがドキュメントにも当てはまります:PyBSDDBv5.3.0ドキュメント

4

2 に答える 2

1

Python 3+での唯一の(醜い)回避策は、最初に文字列をバイトにエンコードすることです。

dben.put(bytes(str(3), "ascii"), bytes(str(2), "ascii"))

または、より便利に:

dben.put(str(3).encode("ascii"), str(2).encode("ascii"))

>>> dben.exists(bytes(2, "ascii"))
False
>>> dben.exists(bytes(3, "ascii"))
True 
于 2012-11-20T11:13:03.053 に答える
1

bsddbは、キーおよび値としてバイトのみを格納します。したがって、最初に値をバイトに変換する必要があります。推奨される方法は、structpythonモジュールを使用することです。

于 2016-02-28T10:32:53.130 に答える