根据文档 (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
。