python读写LMDB文件的方法

LMDB的全称是Lightning Memory-Mapped Database(快如闪电的内存映射数据库),它的文件结构简单,包含一个数据文件和一个锁文件:

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() 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python合并文本文件示例

    python实现两个文本合并 employee文件中记录了工号和姓名 复制代码 代码如下: cat employee.txt:100 Jason Smith200 John Doe300 Sanjay Gupta400 Ashok Sharma bonus文件中记录工号和工资 复制代码 代码如下: cat bonus.txt:100 $5,000200 $500300 $3,000400 $1,250 要求把两个文件合并并输出如下, 处理结果: 复制代码 代码如下: 400 ashok shar

  • 如何用Python合并lmdb文件

    由于Caffe使用的存储图像的数据库是lmdb,因此有时候需要对lmdb文件进行操作,本文主要讲解如何用Python合并lmdb文件.没有lmdb支持的,需要用pip命令安装. pip install lmdb 代码及注释如下: # coding=utf-8 # filename: merge_lmdb.py import lmdb # 将两个lmdb文件合并成一个新的lmdb def merge_lmdb(lmdb1, lmdb2, result_lmdb): print 'Merge sta

  • Python实现分割文件及合并文件的方法

    本文实例讲述了Python实现分割文件及合并文件的方法.分享给大家供大家参考.具体如下: 分割文件split.py如下: #!/usr/bin/python ########################################################################## # split a file into a set of parts; join.py puts them back together; # this is a customizable ve

  • python将多个文本文件合并为一个文本的代码(便于搜索)

    但是,当一本书学过之后,对一般的技术和函数都有了印象,突然想要查找某个函数的实例代码时,却感到很困难,因为一本书的源代码目录很长,往往有几十甚至上百个源代码文件,想要找到自己想要的函数实例谈何容易? 所以这里就是要将所有源代码按照目录和文件名作为标签,全部合并到一处,这样便于快速的搜索.查找,不是,那么查找下一个--于是很快便可以找到自己想要的实例,非常方便.当然,分开的源代码文件依然很有用,同样可以保留.合并之后的源代码文件并不大,n*100KB而已,打开和搜索都是很快速的.大家可以将同一种编

  • python读取LMDB中图像的方法

    本文实例为大家分享了python读取LMDB中的图像具体代码,供大家参考,具体内容如下 图像数据写入LMDB之后最好再按照写入的逻辑反向解析写入的图像,如果图像能够被还原则证明写入方式是没有问题的. from PIL import Image def read_from_lmdb(lmdb_path,img_save_to): try: lmdb_env=lmdb.open(lmdb_path, map_size=3221225472) lmdb_txn=lmdb_env.begin() lmd

  • Python实现将目录中TXT合并成一个大TXT文件的方法

    本文实例讲述了Python实现将目录中TXT合并成一个大TXT文件的方法.分享给大家供大家参考.具体如下: 在网上下了一个dota的英雄攻略,TXT格式,每个英雄一个文件,看得疼,就写了一个小东西,合并一下. #coding=gbk import os import sys import glob def dirTxtToLargeTxt(dir,outputFileName): '''从dir目录下读入所有的TXT文件,将它们写到outputFileName里去''' #如果dir不是目录返回

  • python中合并两个文本文件并按照姓名首字母排序的例子

    前段时间前在网上看到一段面试题,要求如下: employee文件中记录了工号和姓名 复制代码 代码如下: cat employee.txt: 100 Jason Smith 200 John Doe 300 Sanjay Gupta 400 Ashok Sharma bonus文件中记录工号和工资 复制代码 代码如下: cat bonus.txt: 100 $5,000 200 $500 300 $3,000 400 $1,250 要求把两个文件合并并输出如下, 处理结果: 复制代码 代码如下:

  • python实现文本文件合并

    python合并文本文件示例代码. python实现两个文本合并 employee文件中记录了工号和姓名 cat employee.txt: 100 Jason Smith 200 John Doe 300 Sanjay Gupta 400 Ashok Sharma bonus文件中记录工号和工资 cat bonus.txt: 100 $5,000 200 $500 300 $3,000 400 $1,250 要求把两个文件合并并输出如下, 处理结果: 400 ashok sharma $1,2

  • python 合并文件的具体实例

    支持两种用法:(1)合并某一文件夹下的所有文件(忽略文件夹等非文件条目)(2)显示的合并多文件. 复制代码 代码如下: import sysimport os'''    usage(1): merge_files pathname              pathname is directory and merge files in pathname directory    usage(2): merge_files file1 file2 [file3[...]]'''FILE_SLI

  • Python将多个excel文件合并为一个文件

    利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中. 完整代码 # -*- coding: utf-8 -*- #将多个Excel文件合并成一个 import xlrd import xlsxwriter #打开一个excel文件 def open_xls(file): fh=xlrd.open_workbook(file) return fh #

随机推荐