LMDB的全称是闪电内存映射数据库(快如闪电的内存映射数据库),它的文件结构简单,包含一个数据文件和一个锁文件:
LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。
让系统访问大量小文件的开销很大,而LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。数据库单文件还能减少数据集复制/传输过程的开销。
在python中使用lmdb: linux中,可以使用指令的pip安装lmdb安装lmdb包。
1。生成一个空的lmdb数据库文件
# - * -编码:utf - 8 - * 进口lmdb #如果火车文件夹下没有data.mbd或lock.mdb文件,则会生成一个空的,如果有,不会覆盖 # map_size定义最大储存容量,单位是kb,以下定义1 tb容量 env=lmdb.open(“。/火车”,map_size=1099511627776) env.close ()
2。LMDB数据的添加,修改,删除
# - * -编码:utf - 8 - * 进口lmdb # map_size定义最大储存容量,单位是kb,以下定义1 tb容量 env=lmdb.open (”。/火车”,map_size=1099511627776) 时候=env.begin(写=True) #添加数据和键值 时候。把(键=' 1 ',值=' https://www.yisu.com/zixun/aaa ') 时候。把(键=' 2 ',值=' https://www.yisu.com/zixun/bbb ') 时候。把(关键=' 3 ',value=' https://www.yisu.com/zixun/ccc ') #通过键值删除数据 txn.delete(关键=' 1 ') #修改数据 时候。把(关键=' 3 ',value=' https://www.yisu.com/zixun/ddd ') #通过commit()函数提交更改 txn.commit () env.close ()
3。查询lmdb数据库内容
# - * -编码:utf - 8 - * 进口lmdb env=lmdb.open(“/火车。”) #参数写设置为真实才可以写入 时候=env.begin(写=True) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #添加,修改,删除数据 #添加数据和键值 时候。把(键=' 1 ',值=' https://www.yisu.com/zixun/aaa ') 时候。把(键=' 2 ',值=' https://www.yisu.com/zixun/bbb ') 时候。把(关键=' 3 ',value=' https://www.yisu.com/zixun/ccc ') #通过键值删除数据 txn.delete(关键=' 1 ') #修改数据 时候。把(关键=' 3 ',value=' https://www.yisu.com/zixun/ddd ') #通过commit()函数提交更改 txn.commit () # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #查询lmdb数据 时候=env.begin () #获取函数通过键值查询数据 打印txn.get (str (2)) #通过游标()遍历所有数据和键值 关键,价值txn.cursor (): (打印键,值) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # env.close ()
4。读取已有. mdb文件内容
# - * -编码:utf - 8 - * 进口lmdb env_db=lmdb.Environment (“trainC”) # env_db=lmdb.open (“。/trainC”) 时候=env_db.begin () #获取函数通过键值查询数据,如果要查询的键值没有对应数据,则输出没有 打印txn.get (str (200)) 关键,txn.cursor价值():#遍历 (打印键,值) env_db.close ()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。