Python 使用哈希访问方法向BerkeleyDB添加键值对
我正在尝试使用哈希访问方法创建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,
>>> 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转换为字节!编辑你的答案。