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编程入门之Hello World的三种实现方式
Nov 13 Python
CentOS6.5设置Django开发环境
Oct 13 Python
让代码变得更易维护的7个Python库
Oct 09 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
python next()和iter()函数原理解析
Feb 07 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
python实现简易版学生成绩管理系统
Jun 22 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
Jun 29 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
Python实现像awk一样分割字符串
Sep 15 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 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/10/09 PHP
PHP安全配置
2006/12/06 PHP
PHP入门速成教程
2007/03/19 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
python实现图像全景拼接
2020/03/27 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
财务总监管理职责范文
2014/03/09 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
如何写辞职信
2015/05/13 职场文书
东京审判观后感
2015/06/01 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis