Python 使用哈希访问方法向BerkeleyDB添加键值对

Python 使用哈希访问方法向BerkeleyDB添加键值对,python,berkeley-db,Python,Berkeley Db,我正在尝试使用哈希访问方法创建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,

我正在尝试使用哈希访问方法创建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和队列数据库使用整数键

企图

>>> dben[2] = 1
它给出了同样的错误

如何向哈希BerkeleyDB添加条目

使用cntrl空间进行自动完成,我看不到相关的方法。文档也是如此:

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 

bsddb仅存储为键和值字节。因此,必须首先将值转换为字节。首选的方法是使用struct python模块。

注意,字节(n),其中n为整数创建长度为n的字节数组,它不会将n转换为字节!编辑你的答案。