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的Flask框架中实现全文搜索功能
Apr 20 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
简单谈谈Python流程控制语句
Dec 04 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
python正则表达式的使用
Jun 12 Python
Python实现的求解最小公倍数算法示例
May 03 Python
django富文本编辑器的实现示例
Apr 10 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
pytorch+lstm实现的pos示例
Jan 14 Python
Python守护进程实现过程详解
Feb 10 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
jquery连缀语法如何实现
2012/11/29 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
python下载文件时显示下载进度的方法
2015/04/02 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python写的一个简单监控系统
2015/06/19 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
办公文员的工作岗位职责
2013/11/12 职场文书
抄作业检讨书
2014/02/17 职场文书
社会公德演讲稿
2014/05/20 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
纪律教育月活动总结
2014/08/26 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
刮痧观后感
2015/06/05 职场文书
步步惊心观后感
2015/06/12 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL