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()  

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为Nginx开启SSI模块以支持SHTML解析

    为Nginx开启SSI模块以支持SHTML解析

    2021年8月29日
    55
  • 计算机三级数据库要安装什么软件,计算机三级数据库技术题库app

    计算机三级数据库要安装什么软件,计算机三级数据库技术题库app介绍(2020-07-06)计算机三级数据库技术题库,本软件包含了大量计算机三级数据库技术题,对备战考试的朋友很有帮助。软件中包括以下内容:2011年春浙江省高等学校计算机等级考试试卷(三级数据库技术及应用)2011年9月计算机等级考试三级数据库试题2012年春浙江省高等院校计算机等级考试三级数据库技术笔试真题2012年秋浙江省高等学校计算机等级考试试卷(三级数据库技术及应用)计算机等级考试三…

    2022年6月18日
    60
  • 处理:/var/redis/run/redis_6379.pid exists, process is already running or crashed「建议收藏」

    处理:/var/redis/run/redis_6379.pid exists, process is already running or crashed「建议收藏」命令;serviceredisstart/var/redis/run/redis_6379.pidexists,processisalreadyrunningorcrashed引起这类问题一般都是强制关掉电源或断电造成的,也是没等linux正常关机科学的处理办法2种1:可用安装文件启动redis-server/etc/re

    2022年6月7日
    34
  • sklearn.KFold用法示例

    sklearn.KFold用法示例sklearn.KFold用法示例参数解释用法示例参数解释classsklearn.model_selection.KFold(n_splits=’warn’,shuffle=False,random_state=None)API文档将训练/测试数据集划分n_splits个互斥子集,每次用其中一个子集当作验证集,剩下的n_splits-1个作为训练集,进行n_splits次训练和…

    2022年9月20日
    2
  • js 数组splice_splice会影响原数组吗

    js 数组splice_splice会影响原数组吗今天用到了数组的删除,分别使用了splice和delete方法,记录一下,方便下次查找。原数组是一个关联数组,如vartest=[];test[1]={name:’1′,age:1};test[2]={name:’2′,age:2};test[4]={name:’3′,age:3};console.log(test)长度为5的关联数组,现在开始删除。1.splice方法test.splice(2

    2022年10月1日
    2
  • Java面试题整理,2021年腾讯Java高级面试题及答案[通俗易懂]

    Java面试题整理,2021年腾讯Java高级面试题及答案[通俗易懂]正文如果你参加过一些大厂面试,肯定会遇到一些开放性的问题:1、写一段程序,让其运行时的表现为触发了5次YoungGC、3次FullGC、然后3次YoungGC;2、如果一个Java进程突然消失了,你会怎么去排查这种问题?3、给了一段Spring加载Bean的代码片段,阐述一下具体的执行流程?是不是看上去很难,是不是和自己准备的“题库”中的问题不一样?不知道从何处下手?如果你有这种感觉,那么说明你的技术还需要继续修炼。面对如此多的技术面试,怎么样才能说自己的技术已经过关了呢?只有

    2022年7月18日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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