python读写LMDB文件的方法


Posted in Python onJuly 02, 2018

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

python读写LMDB文件的方法

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+django实现文件下载
Jan 17 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
python实现换位加密算法的示例
Oct 14 Python
python 制作自定义包并安装到系统目录的方法
Oct 27 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
python获取Pandas列名的几种方法
Aug 07 Python
python 装饰器的实际作用有哪些
Sep 07 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
对numpy中的数组条件筛选功能详解
Jul 02 #Python
python matlibplot绘制多条曲线图
Feb 19 #Python
python matlibplot绘制3D图形
Jul 02 #Python
对numpy Array [: ,] 的取值方法详解
Jul 02 #Python
Python使用itertools模块实现排列组合功能示例
Jul 02 #Python
python绘制立方体的方法
Jul 02 #Python
python numpy 一维数组转变为多维数组的实例
Jul 02 #Python
You might like
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python环境变量设置方法
2016/08/28 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
市场营销专业个人求职信范文
2013/12/14 职场文书
学生会主席事迹材料
2014/01/28 职场文书
个人主要事迹材料
2014/08/26 职场文书
员工年终自我评价
2014/09/14 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
教师个人考察材料
2014/12/16 职场文书
小学母亲节活动总结
2015/02/10 职场文书
教师研修随笔感言
2015/11/18 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS