0

我正在尝试使用哈希访问方法创建一个 BerkeleyDB,如下所示:

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

但是,当我尝试插入一个条目时,没有任何效果:

>>> dben.put(3,2)

结果是

Traceback(最近一次调用最后一次):文件“”,第 1 行,在 dben.put(3,2) 类型错误:整数键只允许用于 Recno 和 Queue DB

尝试

>>> dben[2] = 1

它给出了同样的错误。

如何向我的哈希 BerkeleyDB 添加条目?

使用 cntrl-space 进行自动完成,我看不到相关方法。文档也是如此:PyBSDDB v5.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 仅将字节存储为键和值。所以你必须先将你的值转换为字节。首选方法是使用 struct python 模块。

于 2016-02-28T10:32:53.130 回答