我正在尝试使用散列访问方法创建一个BerkeleyDB,如下所示:
>>> from bsddb3 import db
>>> dben = DB()
>>> dben.open("filename", None, db.DB_HASH, db.DB_CREATE)
然而,当我尝试插入一个条目时,没有任何作用:
>>> dben.put(3,2)
结果
追踪(最近一次通话): 文件“”,第1行,in dben.put(3,2) TypeError:仅允许Recno和Queue DB的整数键
尝试
>>> dben[2] = 1
它给出了同样的错误。
如何在我的哈希BerkeleyDB中添加一个条目?
使用cntrl-space进行自动完成我看不到相关的方法。文档也是如此:PyBSDDB v5.3.0 documentation
答案 0 :(得分: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
答案 1 :(得分:1)
bsddb仅作为键和值存储字节。所以你必须先将你的值转换为字节。首选方法是使用struct python模块。