python读写LMDB文件的方法

 更新时间:2018年07月02日 11:28:12   作者:Touch_Dream  
这篇文章主要为大家详细介绍了python读写LMDB文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

LMDB的全称是Lightning Memory-Mapped Database(快如闪电的内存映射数据库),它的文件结构简单,包含一个数据文件和一个锁文件:

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

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

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

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

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

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

# -*- coding: utf-8 -*- 
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数据库内容

# -*- coding: utf-8 -*- 
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. 读取已有.mdb文件内容

# -*- coding: utf-8 -*- 
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() 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • python实现二叉排序树

    python实现二叉排序树

    这篇文章主要介绍了python实现二叉排序树,
    2022-01-01
  • Python读取Excel的方法实例分析

    Python读取Excel的方法实例分析

    这篇文章主要介绍了Python读取Excel的方法,实例分析了Python操作Excel文件的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-07-07
  • Python随机数random模块使用指南

    Python随机数random模块使用指南

    本文给大家分享的是Python随机数random模块的几个常用的方法,非常的简单,小伙伴们喜欢的话,后续继续深入探讨
    2016-09-09
  • 基于Python制作一个图片色卡提取器

    基于Python制作一个图片色卡提取器

    在一些特殊的业务场景中,我们需要一次性提取一张图片中的色卡信息,并且需要使用十六进制的颜色表示方法进行展示。本文就来用Python做个图片色卡提取器,感兴趣的可以尝试一下
    2022-12-12
  • Python实现新型冠状病毒传播模型及预测代码实例

    Python实现新型冠状病毒传播模型及预测代码实例

    在本篇文章里小编给大家整理的是关于Python实现新型冠状病毒传播模型及预测代码内容,有兴趣的朋友们可以学习下。
    2020-02-02
  • python绘图中的 四个绘图技巧

    python绘图中的 四个绘图技巧

    在可视化数据时,通常需要在单个图形中绘制多个图形。 例如,如果您想从不同的角度可视化相同的变量如:数字变量的并排直方图和箱线图,则多个图形很有用。 在这篇文章中,我分享了绘制多个图形的 4 个简单但实用的技巧,具有一定的参考价值,需要的小伙伴可以参考一下
    2021-12-12
  • Python小白学习爬虫常用请求报头

    Python小白学习爬虫常用请求报头

    在本篇文章里小编给大家整理了关于Python小白学习爬虫常用请求报头的相关知识点,需要的朋友们可以学习下。
    2020-06-06
  • 详解python中的hashlib模块的使用

    详解python中的hashlib模块的使用

    这篇文章主要介绍了python中的hashlib模块的使用,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • Python的pygame安装教程详解

    Python的pygame安装教程详解

    Pygame是跨平台Pyth,Pygame 作者是 Pete Shinners, 协议为 GNU Lesser General Public License。这篇文章主要介绍了Python的pygame安装教程,需要的朋友可以参考下
    2020-02-02
  • 浅析Python中压缩zipfile与解压缩tarfile模块的使用

    浅析Python中压缩zipfile与解压缩tarfile模块的使用

    Python 提供了两个标准库模块来处理文件的压缩和解压缩操作:zipfile和tarfile,本文将分享 这两个模块的使用方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10

最新评论