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根据文件大小打log日志
Oct 09 Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
python 内置函数filter
Jun 01 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
django模板结构优化的方法
Feb 28 Python
Python搭建Spark分布式集群环境
Jul 05 Python
Keras: model实现固定部分layer,训练部分layer操作
Jun 28 Python
Python实现GIF图倒放
Jul 16 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
Python爬虫之爬取二手房信息
Apr 27 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
PHP配置心得包含MYSQL5乱码解决
2006/11/20 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
php实现分页显示
2015/11/03 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
Python bytes string相互转换过程解析
2020/03/05 Python
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
自学考试自我鉴定范文
2013/09/26 职场文书
工作自荐信
2013/12/11 职场文书
人事行政主管岗位职责
2013/12/22 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
学习决心书范文
2014/03/11 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
会计学自荐信
2014/06/03 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
导游词之桂林山水
2019/09/20 职场文书