LMDB的全称是Lightning Memory-Mapped Database,它的文件结构简单,包含一个数据文件和一个锁文件。

LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。

让系统访问大量小文件的开销很大,而LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。数据库单文件还能减少数据集复制/传输过程的开销。

在python中使用lmdb: linux中,可以使用指令‘pip install lmdb’ 安装lmdb包。

1. 生成一个空的lmdb数据库文件

import lmdb  # 如果train文件夹下没有data.mbd或lock.mdb文件,则会生成一个空的,如果有,不会覆盖
# map_size定义最大储存容量,单位是kb,以下定义1TB容量
env = lmdb.open("./train",map_size=1099511627776)
env.close()  

2. LMDB数据的添加、修改、删除

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数据库内容

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. 读取已有lmdb文件内容

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读写LMDB文件相关推荐

  1. python读写压缩文件使用gzip和bz2

    python读写压缩文件使用gzip和bz2 #读取压缩文件 # gzip compression import gzip with gzip.open('somefile.gz', 'rt') as ...

  2. python读取csv文件的方法-python读写csv文件的方法

    1.爬取豆瓣top250书籍 import requests import json import csv from bs4 import BeautifulSoup books = [] def b ...

  3. python处理excel教程实例-python 读写excel文件操作示例【附源码下载】

    本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...

  4. csv 字符串_爬虫|python读写csv文件的方法完成生涯规划表

    前面用PrettyTable制作了生涯规划表,今天突然想到其实可以用Python读写Excel文件,还可以制作Excel表格,相对而言,感觉csv的读写更简单,所以决定用csv改写生涯规划案例,以后教 ...

  5. Python读写docx文件(三十五)

    Python读写docx文件 Python读写word文档有现成的库可以处理 pip install python-docx安装一下. https://python-docx.readthedocs. ...

  6. 三十一、Python读写docx文件

    @Author:Runsen 文章目录 Python读写docx文件 Python读写docx文件 Python读写word文档有现成的库可以处理 pip install python-docx安装一 ...

  7. python读csv最快方法_使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  8. python读写ini文件的库支持unicode_Python读写unicode文件的方法

    本文实例讲述了Python读写unicode文件的方法.分享给大家供大家参考.具体实现方法如下: #coding=utf-8 import os import codecs def writefile ...

  9. python更新excel内容_[原创]使用 Python 读写 Excel 文件(一)更新

    项目要求 如果说是 Office 办公软件使得 Windows 成为主流的操作系统,那么 Excel 就是使得微软硬起来的法宝! Word 和 PowerPoint 都有不相上下的对手,但 Excel ...

  10. python暴力破解excel_使用 Python 读写 Excel 文件(一)

    项目要求 如果说是 Office 办公软件使得 Windows 成为主流的操作系统,那么 Excel 就是使得微软硬起来的法宝! Word 和 PowerPoint 都有不相上下的对手,但 Excel ...

最新文章

  1. SpringMVC基础及应用-李守红
  2. CVPR 2019分享会论坛实录丨2019最值得期待的计算机视觉问题有哪些?(附PPT)
  3. 2021年春季学期教学记录
  4. python到底怎么学-学 Python 到底能帮你解决什么问题 ?
  5. 混迹于IT纯屌界中独一无二的丸子
  6. Java spark中的各种范型接口Function的区别(持续更新中)
  7. jdbc对mysql进行增删改查操作(Statement)
  8. js add方法_爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py
  9. spring---FactoryBean与BeanFactory的区别
  10. python判断字符类型例题_Python面试题:字符类型的考察
  11. 《高质量C编程指南》读后感
  12. android手机速度太慢,如果我的Android手机速度变慢该怎么办?加快手机速度的五种方法...
  13. 乐鱼播放器(乐鱼影音盒) v1.13 官方版
  14. 童心未泯?LEGO积木iPod touch外壳,自己拼积木!
  15. java 获取一年内周六周日日期
  16. [ 网络协议篇 ] IGP 详解之 OSPF 详解(三)--- OSPF协议报文 链路状态通告 详解
  17. Java-Mybatis(二): Mybatis配置解析、resultMap结果集映射、日志、分页、注解开发、Mybatis执行流程分析
  18. JDBC批量插入sql-踩坑笔记
  19. 程序员35岁前成功的12条黄金法则
  20. 密歇根大学计算机硕士学制,密歇根大学安娜堡分校学专业设置及学制介绍

热门文章

  1. 爱奇艺技术分享:轻松诙谐,讲解视频编解码技术的过去,android项目开发实战入门明日科技
  2. Android实现选择题答题(包括单选、多选和答题卡)
  3. html整人js代码大全,这几行 javascript 代码能让你的浏览器崩溃?
  4. TS文件格式详解及解封装过程
  5. 如何理解UEFI的事件机制(三)——时钟中断
  6. 纯C语言按键驱动,使用软件查询实现
  7. 纯JAVA写的socket局域网斗地主游戏
  8. kaggle泰坦尼克
  9. Zemax学习笔记(5)- 设计单透镜实例_2,分析
  10. linux小红帽网卡设定,LINUX红帽子怎么配置上网