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中如何使用朴素贝叶斯算法
Apr 06 Python
详解python3中的真值测试
Aug 13 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
python 内置模块详解
Jan 01 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
Python 实现向word(docx)中输出
Feb 13 Python
python实现FTP循环上传文件
Mar 20 Python
python查看矩阵的行列号以及维数方式
May 22 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
python两种注释用法的示例
Oct 09 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之Smarty入门
2007/01/04 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
让焦点自动跳转
2006/07/01 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
python3简单实现微信爬虫
2015/04/09 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
儿童python练习实例
2018/05/27 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python读写csv文件的方法
2019/08/13 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
pytorch中index_select()的用法详解
2021/01/06 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
局域网定义和特性
2016/01/23 面试题
通息工程毕业生自荐信
2013/10/16 职场文书
三年级数学教学反思
2014/01/31 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
个人债务授权委托书
2014/10/17 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js