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一键升级所有pip package的方法
Jan 16 Python
神经网络python源码分享
Dec 15 Python
Django中的Signal代码详解
Feb 05 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
python判断正负数方式
Jun 03 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
python 基于DDT实现数据驱动测试
Feb 18 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 Python
Python 统计序列中元素的出现频度
Apr 26 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产生随机字符串函数
2006/12/06 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
dedecms中使用php语句指南
2014/11/13 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
javascript 二进制运算技巧解析
2012/11/27 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
Python用input输入列表的实例代码
2020/02/07 Python
keras slice layer 层实现方式
2020/06/11 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
化学教师教学反思
2014/01/17 职场文书
通信生自我鉴定
2014/01/18 职场文书
搞笑的获奖感言
2014/08/16 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
大二学年个人总结
2015/03/03 职场文书
python爬取某网站原图作为壁纸
2021/06/02 Python
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android