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解析xml文件操作实例
Oct 05 Python
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
Python实现多线程抓取妹子图
Aug 08 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
python版微信跳一跳游戏辅助
Jan 11 Python
全面分析Python的优点和缺点
Feb 07 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
十个Python自动化常用操作,即拿即用
May 10 Python
python 如何用terminal输入参数
May 25 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
php radio 单选框获取与保持值的实现代码
2010/05/15 PHP
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
php文件操作相关类实例
2015/06/18 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
非常好的js代码
2006/06/27 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
详解Django之auth模块(用户认证)
2018/04/17 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
python3字符串输出常见面试题总结
2020/12/01 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
英语演讲稿范文
2014/01/03 职场文书
护士辞职信范文
2014/01/19 职场文书
学校消防演习方案
2014/02/19 职场文书
简单租房协议书
2014/04/09 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书