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


相关推荐

  • iPhone屏幕尺寸、分辨率及适配

    从初代iPhone3GS到现如今的iPhone6(+),屏幕尺寸、分辨率、像素密度都在在不断增大。如何适配不同的屏幕尺寸,使UI更加协调美观,这给iPhone/iOS应用开发者带来了挑战。本文结合个人在iOSUI开发和适配方面的粗浅经验,对常用屏幕适配相关因素做个梳理盘点,以备日后查阅。

    2022年4月7日
    225
  • log4j2.xml配置文件详解_log4j配置日志文件目录

    log4j2.xml配置文件详解_log4j配置日志文件目录log4j.xml配置文件详解一log4j.xml配置<?xmlversion=”1.0″encoding=”UTF-8″?><!DOCTYPElog4j:configurationSYSTEM”log4j.dtd”><log4j:configuration><!–将日志信息输出到控制台–>&lt…

    2022年9月30日
    3
  • ubuntu 20.04 安装中文输入法_如何在ubuntu中安装中文输入法

    ubuntu 20.04 安装中文输入法_如何在ubuntu中安装中文输入法在Ubuntu系统中,无论是写文档还是在程序中写注释,都经常需要用到中文输入法。本文简单介绍了三种输入法框架,然后详细介绍了在Ubuntu20.04系统中,IBus框架和Fcitx框架支持的中文输入法的配置和安装。……

    2022年9月26日
    3
  • MSDP配置(anycast RP)

    MSDP配置(anycast RP)实验拓扑:案例配置需求:1、 设备之间互联的IP如图所示;2、 R1和R2设备互联使用12.1.1.X/24,X表示设备编号,如R1使用12.1.1.1/24,R2使用12.1.1.2/24,其它设备互联同上;3、 AS100内IGP协议运行OSPF协议,AS200内IGP协议运行EIGRP协议;4、 R3和R4配置运行BGP协议,建立EBGP邻居关系;5、 配置组播稀疏模式,其中…

    2022年5月18日
    74
  • pandas缺失值填充_python缺失值处理 fillna

    pandas缺失值填充_python缺失值处理 fillna约定:importpandasaspdimportnumpyasnpfromnumpyimportnanasNaN填充缺失数据fillna()是最主要的处理方式了。df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])df1代码结果:…

    2022年8月12日
    42
  • Cocos2d-x Box2D物理引擎编译设置

    Cocos2d-x Box2D物理引擎编译设置

    2022年1月15日
    46

发表回复

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

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