gpt4 book ai didi

python - 如何在 lmdb 中正确插入重复键?

转载 作者:行者123 更新时间:2023-12-04 09:40:43 35 4
gpt4 key购买 nike

根据文档 ( https://lmdb.readthedocs.org/en/release/ ),将 dupsort 传递给 open_db() 应该允许将重复键添加到 lmdb 数据库。但情况似乎并非如此,它仍在覆盖值,除非我读错了文档。

env = lmdb.open(path.join(directory, 'lmdb'), map_size=map_size)
db = env.open_db(dupsort=True)

with env.begin(db=db, write=True) as transaction:
transaction.put(b'mykey', b'value1')
transaction.put(b'mykey', b'value2')
transaction.put(b'mykey', b'value3')

但是,当我遍历键值时,它只显示最后一个值“value3”。

cursor = transaction.cursor()
for key, value in cursor.iternext(True, True):
print(key, value)

iternext_dup() 似乎也没有打印出预期值。我还尝试了 cursor.next() 并且它只返回 True 一次,另外 transaction.stat() 显示 entries: 1.

最佳答案

检查 iternext_dup(keys=False, values=True) 方法

从文档中,

在调用 next_dup() 之前返回一个产生当前键的当前值(“重复”)的前向迭代器,重复直到达到当前键的最后一个值。

仅对使用 dupsort=True 打开的数据库有意义。

关于python - 如何在 lmdb 中正确插入重复键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62348600/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com