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文本生成二维码实例
Jan 06 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
通过cmd进入python的实例操作
Jun 26 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
如何通过Django使用本地css/js文件
Jan 20 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
Python验证码截取识别代码实例
May 16 Python
python属于解释型语言么
Jun 15 Python
python脚本框架webpy模板控制结构
Nov 20 Python
Python如何让字典保持有序排列
Apr 29 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自动判断字符集并转码的详解
2013/06/26 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
php获取根域名方法汇总
2014/10/28 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
JS实现轮播图效果
2020/01/11 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
python paramiko模块学习分享
2017/08/23 Python
django定期执行任务(实例讲解)
2017/11/03 Python
详解python eval函数的妙用
2017/11/16 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
大学生咖啡店创业计划书
2014/01/21 职场文书
灰雀教学反思
2014/04/28 职场文书
情况说明书格式范文
2014/05/06 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers