直接上代码。
import lmdb
def create():
env = lmdb.open('/home/dataset/ReCTS/tmp_lmdb', map_size=1099511627776)
txn = env.begin(write=True)
txn.put('a'.encode(), 'q'.encode()) # 写入
txn.put('s'.encode(), 'w'.encode())
txn.commit() # 提交
env.close()
def read():
env = lmdb.open('/home/dataset/ReCTS/tmp_lmdb', readonly=True, max_readers=1, lock=False, readahead=False, meminit=False)
with env.begin(write=False) as txn:
print(txn.get('a'.encode()).decode()) # get()方法
for k, v in txn.cursor(): # cursor()用于遍历
print(k.decode(), v.decode())
env.close()
create()
read()
结果为:
q
a q
s w
千万要注意 txn.commit()不要漏掉,否则占了内存还不能读取。不过也可以使用with ... as ...省去此步:
def create():
env = lmdb.open('/home/dataset/ReCTS/tmp_lmdb', map_size=1099511627776)
with env.begin(write=True) as txn:
txn.put('a'.encode(), 'q'.encode())
txn.put('s'.encode(), 'w'.encode())
env.close()