LMDB(Lighting Memory-Mapped Database)内存映射数据库,数据格式就像是dict类型,由key-value
组成。一个LMDB数据库应该包括两个文件:1.data(数据)文件 2.lock(锁)文件。LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。
1.初始化
def initialize():
env = lmdb.open('test')
return env
2.插入(key是唯一的)
def insert(env, key, value):
txn = env.begin(write=True)
txn.put(str(key), value)
txn.commit()
3.删除
def delete(env, key):
txn = env.begin(write=True)
txn.delete(str(key))
txn.commit()
4.更新
def update(env, key, value):
txn = env.begin(write=True)
txn.put(str(key), value)
txn.commit()
5.查询
def search(env, key):
txn = env.begin()
name = txn.get(str(key))
return name
6.全部显示
def display(env):
txn = env.begin()
cur = txn.cursor()
for key, value in cur:
print('key : ', key, '--- value : ', value)
参考链接:
LMDB使用说明
问题1:在Python3下面使用txn.put()
,出现错误:
TypeError: Won't implicitly convert unicode to bytes use .encode()
即使改成txn.put(str(x).encode(),value)
好像也不可以。但是切换到Python2就没有问题了。