Python读写LMDB文件「建议收藏」

Python读写LMDB文件「建议收藏」LMDB的全称是LightningMemory-MappedDatabase,它的文件结构简单,包含一个数据文件和一个锁文件。LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。让系统访问大量小文件的开销很大,而LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

LMDB的全称是Lightning Memory-Mapped Database,它的文件结构简单,包含一个数据文件和一个锁文件。

LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。

让系统访问大量小文件的开销很大,而LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。数据库单文件还能减少数据集复制/传输过程的开销。

python中使用lmdb: linux中,可以使用指令‘pip install lmdb’ 安装lmdb包。

1. 生成一个空的lmdb数据库文件

import lmdb  
  
# 如果train文件夹下没有data.mbd或lock.mdb文件,则会生成一个空的,如果有,不会覆盖  
# map_size定义最大储存容量,单位是kb,以下定义1TB容量  
env = lmdb.open("./train",map_size=1099511627776)  
env.close()  

2. LMDB数据的添加、修改、删除

import lmdb  
  
# map_size定义最大储存容量,单位是kb,以下定义1TB容量  
env = lmdb.open("./train", map_size=1099511627776)  
  
txn = env.begin(write=True)  
  
# 添加数据和键值  
txn.put(key = '1', value = 'aaa')  
txn.put(key = '2', value = 'bbb')  
txn.put(key = '3', value = 'ccc')  
  
# 通过键值删除数据  
txn.delete(key = '1')  
  
# 修改数据  
txn.put(key = '3', value = 'ddd')  
  
# 通过commit()函数提交更改  
txn.commit()  
env.close()  

3. 查询lmdb数据库内容

import lmdb  
  
env = lmdb.open("./train")  
  
# 参数write设置为True才可以写入  
txn = env.begin(write=True)  
############################################添加、修改、删除数据  
  
# 添加数据和键值  
txn.put(key = '1', value = 'aaa')  
txn.put(key = '2', value = 'bbb')  
txn.put(key = '3', value = 'ccc')  
  
# 通过键值删除数据  
txn.delete(key = '1')  
  
# 修改数据  
txn.put(key = '3', value = 'ddd')  
  
# 通过commit()函数提交更改  
txn.commit()  
############################################查询lmdb数据  
txn = env.begin()  
  
# get函数通过键值查询数据  
print txn.get(str(2))  
  
# 通过cursor()遍历所有数据和键值  
for key, value in txn.cursor():  
    print (key, value)  
      
############################################  
  
  
env.close()  

4. 读取已有lmdb文件内容

import lmdb  
  
env_db = lmdb.Environment('trainC')  
# env_db = lmdb.open("./trainC")  
  
txn = env_db.begin()  
  
# get函数通过键值查询数据,如果要查询的键值没有对应数据,则输出None  
print txn.get(str(200))  
  
for key, value in txn.cursor():  #遍历  
    print (key, value)  
  
env_db.close()  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187926.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号