使用散列访问方法将键值对添加到BerkeleyDB

时间:2012-11-20 10:51:07

标签: 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行,in       dben.put(3,2)   TypeError:仅允许Recno和Queue DB的整数键

尝试

>>> dben[2] = 1

它给出了同样的错误。

如何在我的哈希BerkeleyDB中添加一个条目?

使用cntrl-space进行自动完成我看不到相关的方法。文档也是如此:PyBSDDB v5.3.0 documentation

2 个答案:

答案 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模块。