python lmdb demo 这接口和BDB一样恶心啊!

import lmdb

lmdb_img_name = "test.lmdb"
env = lmdb.open(lmdb_img_name, map_size=1e6)

with env.begin(write=True) as txn:
    txn.put("key", "xxxxxxxxxxxxxxxxxx")
    txn.put("key2", "?")
    txn.put("key3", "some value")
    #txn.commit()
env.close()

env = lmdb.open(lmdb_img_name, readonly=True)
with env.begin() as txn:
    print txn.get(b‘key‘)

    cursor = txn.cursor()
    for key, value in cursor:
        print(key, value)

更多见:http://blog.csdn.net/ayst123/article/details/44077903,摘录如下:

write

db_img = lmdb.Environment(lmdb_img_name,map_size=int(1e12))
txn_img = db_img.begin(write=True,buffers=True)
datum_img = getImgDatum(img_path)
txn_img.put(key,datum_img.SerializeToString())
txn_img.commit()
db_img.close()

这里,先建立lmdb的instance, db_img。 然后开始txn(可能有很多个开始?)。 put 存放,最后一定注意要commit()。不然根本没有存进去,检查下生成的lmdb文件就能看出。最后,close()

这里生成datum是用caffe自带的函数,做io.py里,叫caffe.io.array_to_datum, 将array变成datum.

Note:

datum存的时候一定要用datum.SerializeToString(), 将它变成string()

分段write

for ind,obj in enumerate(list):
    if ind%100=0:
        txn.commit()
        txn = env.begin(write=True)

txn.commit()
env.close()

每一次commit 后,需要再定义一次 txn=env.begin(write=True) 
for loop 外面最后再 commit

Read

img_lmdb = imdb.open("name")
txn= img_lmdb.begin()
cursor = txn.cursor()
cursor.iternext()
key = cursor.key()
value = cursor.value()

datum = caffe_pb2.Datum()
datum.ParseFromString(value)

Note:

cursor 第一个是空的, iternext()后是第一个值

循环

txn = … 
cursor = txn.cursor() 
for ( idx, (key, value) ) in enumerate(cursor): 
…………….

这就可以循环找了

时间: 2024-11-02 22:17:06

python lmdb demo 这接口和BDB一样恶心啊!的相关文章

python+request+HTMLTestRunner+unittest接口自动化测试框架

摘要: python + requests实现的接口自动化框架详细教程 1.首先,我们先来理一下思路. 正常的接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具 -> 配置需要的接口参数 -> 进行测试 -> 检查测试结果(有的需要数据库辅助) -> 生成测试报告(html报告) 那么,我们就根据这样的过程来一步步搭建我们的框架.在这个过程中,我们需要做到业务和数据的分离,这样才能灵活,达到我们写框架的目的.只要好好做,一定可以成功.这也是我当初对自己说的. 接下

深入学习python (七) 如何用python调用C/C++接口

python这门优美而以人为本的语言的人性化导致其开发效率的高,高的同时他牺牲了的程序运行效率,在项目开发的后期,可以通过对某些耗时的松耦合的单独的瓶颈模块进行C++重构,然后直接用python改调用C++写的模块即可. 看过了网上的一些例子,自己也来试一试: 首先是一个C++程序的代码,test.cpp如下: #include <iostream> char const* hello() { return "hello, world"; } void bye() { us

Python 中的“CGI” 接口——WSGI

今天在 git.oschina 的首页上看到他们推出演示平台,其中,Python 的演示平台支持 WSGI 接口的应用.虽然,这个演示平台连它自己提供的示例都跑不起来,但是,它还是成功的勾起了我对 WSGI 的强烈好奇心.一番了解,对该机制的认识,总结如下.如有不妥,还望斧正. 为什么是 WSGI? 写过网页应用的各位亲,应该对 CGI 有了解,我们知道,CGI 的全程是“Common Gateway Interface”,即通用 Gateway Interface.没错,这里的 WSGI,就是

python 使用abc实现接口类/虚类(2.2)

python 使用abc实现接口类/虚类 具体类 class BaseA: def run(self): print('base A running') class ChildA(BaseA): def run(self): print('child a') # 具体类可以直接继承也可以实现多态 a = BaseA() a.run() a = ChildA() a.run() 虚类 class BaseB(): @abc.abstractmethod def run(self): return

python调用C语言接口

python调用C语言接口 注:本文所有示例介绍基于linux平台 *** 在底层开发中,一般是使用C或者C++,但是有时候为了开发效率或者在写测试脚本的时候,会经常使用到python,所以这就涉及到一个问题,用C/C++写的底层库,怎么样直接被python来调用? python作为一门胶水语言,当然有办法来处理这个问题,python提供的方案就是ctypes库. ctypes ctypes是python的外部函数库,它提供了C语言的兼容类型,而且可以直接调用用C语言封装的动态库. 如果各位有较

Python通过OpenStack API接口筛选虚机

开发背景: 由于在OpenStack上有过热迁移失败的记录,虚机重装挂载磁盘会报错,数据盘挂载不上,所以需要在OpenStack上找出所有有过热迁移并且迁移失败的虚机处理,以免后续重装挂载不上磁盘. 开发环境: centos,Python 2.7.5,OpenStack 具体思路: Shell筛选命令nova list –all 找出所有虚机nova instance-action-list 虚机ID | egrep -in 'live-migration|error' 筛选出具有相应动作的虚机

python调用接口,python接收post请求接口(附完整代码)

与Scala语言相比,Python有其独特的优势和广泛的应用,python调用接口,因此Spark也推出了PySpark,它在框架上提供了一个使用Python语言的接口,python接收post请求接口为数据科学家使用框架提供了方便. 众所周知,Spark框架主要由Scala语言实现,它还包含少量的Java代码.Spark面向用户的编程接口也是Scala.然而,Python在数据科学领域一直占据着重要的地位.仍然有大量的数据工程师使用各种Python数据处理和科学计算库,如numpy.熊猫.sc

python笔记7:接口实现方法

接口基础知识: 简单说下接口测试,现在常用的2种接口就是http api和rpc协议的接口,今天主要说:http api接口是走http协议通过路径来区分调用的方法,请求报文格式都是key-value形式,返回报文一般是json串: 接口协议:http.webservice.rpc等. 请求方式:get.post方式 请求参数格式: a. get请求都是通过url?param=xxx&param1=xxx b. post请求的请求参数常用类型有:application/json.applicat

使用python编写一个登录接口

需求: 编写登录接口 输入用户名密码 认证成功后 显示欢迎信息 输入三次后锁定 用户信息文件 黑名单的文件 黑名单里检查,不让登录 用户名密码判定 流程图: 代码: #!/usr/bin/env python tries = 0 lockfile = open('account_lock.txt','r+',encoding='UTF-8') tolockfile = open('account_lock.txt','a',encoding='UTF-8') userfile = open('a