python lmdb使用
来源:互联网 发布:德尔康尼骨科知乎 编辑:程序博客网 时间:2024/05/21 14:01
http://www.jianshu.com/p/66496c8726a1
4.1 准备
学习LMDB的时候不禁想到知乎上的提问“有哪些名人长期生活在其他名人的光环下”,说实话感觉查它的人基本都是为了用Caffe……
Anyway,LMDB和SQLite/MySQL等关系型数据库不同,属于key-value数据库(把LMDB想成dict会比较容易理解),键key与值value都是字符串。
安装:
pip install lmdb
使用时import lmdb。
4.2 操作流程
概况地讲,操作LMDB的流程是:
- 通过env = lmdb.open()打开环境
- 通过txn = env.begin()建立事务
- 通过txn.put(key, value)进行插入和修改
- 通过txn.delete(key)进行删除
- 通过txn.get(key)进行查询
- 通过txn.cursor()进行遍历
- 通过txn.commit()提交更改
4.3 操作实例
4.3.1 建立环境
#!/usr/bin/env pythonimport lmdbenv = lmdb.open("students");
运行一下,查看当前目录的变化:
可以看到当前目录下多了students目录,里面有data.mdb和lock.mdb两个文件。
4.3.2 插入、删除、修改
插入与修改都用put实现,删除用delete实现。
#!/usr/bin/env pythonimport lmdbenv = lmdb.open("students");txn = env.begin(write = True);txn.put(str(1), "Alice");txn.put(str(2), "Bob");txn.put(str(3), "Peter");txn.delete(str(1));txn.put(str(3), "Mark");txn.commit();
注意用txn = env.begin()创建事务时,有write = True才能够写数据库。
4.3.3 查询
查单条记录用get(key),遍历数据库用cursor。
直接在上面的代码commit()之后加上:
txn = env.begin();print txn.get(str(2));for key, value in txn.cursor(): print (key, value);
运行一下,输出结果为:
注意上次commit()之后要用env.begin()更新txn。
4.3.4 完整的例子
#!/usr/bin/env pythonimport lmdbimport os, sysdef initialize(): env = lmdb.open("students"); return env;def insert(env, sid, name): txn = env.begin(write = True); txn.put(str(sid), name); txn.commit();def delete(env, sid): txn = env.begin(write = True); txn.delete(str(sid)); txn.commit();def update(env, sid, name): txn = env.begin(write = True); txn.put(str(sid), name); txn.commit();def search(env, sid): txn = env.begin(); name = txn.get(str(sid)); return name;def display(env): txn = env.begin(); cur = txn.cursor(); for key, value in cur: print (key, value);env = initialize();print "Insert 3 records."insert(env, 1, "Alice");insert(env, 2, "Bob");insert(env, 3, "Peter");display(env);print "Delete the record where sid = 1."delete(env, 1);display(env);print "Update the record where sid = 3."update(env, 3, "Mark");display(env);print "Get the name of student whose sid = 3."name = search(env, 3);print name;env.close();os.system("rm -r students");
运行一下,输出结果为:
0 0
- python lmdb使用
- Python lmdb使用
- 使用Python合并lmdb文件
- Python lmdb
- python-lmdb
- caffe python lmdb
- caffe python lmdb读写
- caffe中用python读写lmdb
- python读取LMDB中的图像
- LMDB数据集生成-Python
- 用Python将多标签数据存入caffe使用的HDF5&LMDB格式
- Caffe中LMDB的使用
- Python操作SQLite/MySQL/LMDB/LevelDB
- 初试python生成lmdb问题及解决
- Python解析lmdb格式mnist数据集
- Python操作SQLite/MySQL/LMDB/LevelDB
- Python操作SQLite/MySQL/LMDB/LevelDB
- 使用caffe的convert_imageset生成lmdb文件
- com.fasterxml.jackson.databind.JsonMappingException: No serializer found for
- 人脸检测+对齐之JDA
- Heartbleed心脏出血漏洞原理分析
- Android ART运行时无缝替换Dalvik虚拟机的过程分析
- 使用python实现MapReduce的wordcount实例
- python lmdb使用
- UE4 C++实现搜索指定目录下的指定类型的所有文件
- 简单用JDBC与mysql数据库进行连接
- sklearn——朴素贝叶斯文本分类
- 写代码的同时不忘给自己的身体充充能量
- Note03--STL容器
- Mac 下修改mysql初始密码
- hammer.js
- 使用JSTL标签库