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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 股指期货跨期套利策略优化_股指期现套利策略盈亏

    股指期货跨期套利策略优化_股指期现套利策略盈亏股指期货跨期套利策略概述:本文章介绍使用同一标的不同交割日的股指期货的价差进行跨期套利的策略。本文由JoinQuant量化课堂推出,难度为进阶(下),深度为level-0。​作者:swlaw编辑

    2022年8月6日
    7
  • MySQL慢查询日志分析详解[通俗易懂]

    MySQL慢查询日志分析详解[通俗易懂]MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢…

    2022年10月12日
    2
  • web安全测试_web测试的主要测试内容

    web安全测试_web测试的主要测试内容1.1什么是web安全测试?Web安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,web系统应用仍然能够充分地满足它的需求1.2为什么进行Web安全测试2005年06月,CardSystems,黑客恶意侵入了它的电脑系统,窃取了4000万张信用卡的资料。2011年12月,国内最大的开发者社区CSDN被黑客在互联网上公布了600万注册用户的数据;黑客随后陆续公布了网易、人人、天涯、猫扑等多家大型网站的数据信息。2014年12月,大量12306用户数据被泄露,被泄露的数据达131653条,包括

    2022年9月16日
    2
  • MC蒙特卡洛_我的世界mcc是什么

    MC蒙特卡洛_我的世界mcc是什么MCMC(一)蒙特卡罗方法MCMC(二)马尔科夫链MCMC(三)MCMC采样和M-H采样MCMC(四)Gibbs采样作为一种随机采样方法,马尔科夫链蒙特卡罗(MarkovChainMont

    2022年8月1日
    27
  • 蓝桥杯题目 计算后续日期

    蓝桥杯题目 计算后续日期蓝桥杯题目计算后续日期题目描述我们经常要计算 从今天往后 N 天之后是哪一天 哪年哪月哪日 现在我们就可以编写一个程序 推算指定日期之后的第 N 天是什么日期 输入输入有多组 每组测试用例有一行 包括四个整数 分别表示年 月 日和第 N 天 输出对于每组测试用例 输入由一行组成 表示 年月日 N 天后的 的年 月 日样例输入样例输出 2012

    2025年8月24日
    0
  • ip地址子网掩码默认网关dns的含义_子网掩码和默认网关的作用

    ip地址子网掩码默认网关dns的含义_子网掩码和默认网关的作用转载于:https://www.cnblogs.com/JuneWang/p/3917697.htmlIP地址,子网掩码,默认网关,DNS服务器是什么意思?(一)问题解析001.问:IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇怪,我的计算机没设DNS,竟然能上QQ,却不能打开网页,这是为什么呢>答:IP是32位二进制数据,通常以十进制表示,并以“.”…

    2022年9月29日
    2

发表回复

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

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