Python lmdb使用
来源:互联网 发布:淘宝图片尺寸大小 编辑:程序博客网 时间:2024/06/13 22:24
1. 准备
LMDB和SQLite/MySQL等关系型数据库不同,属于key-value数据库(把LMDB想成dict会比较容易理解),键key与值value都是字符串。
安装:
pip install lmdb
使用时import lmdb。
2. 操作流程
概况地讲,操作LMDB的流程是:
- 通过env = lmdb.open()打开环境
- 通过txn = env.begin()建立事务
- 通过txn.put(key, value)进行插入和修改
- 通过txn.delete(key)进行删除
- 通过txn.get(key)进行查询
- 通过txn.cursor()进行遍历
- 通过txn.commit()提交更改
3. 操作实例
3.1 建立环境
#!/usr/bin/env pythonimport lmdbenv = lmdb.open("students");
运行一下,查看当前目录的变化:
可以看到当前目录下多了students目录,里面有data.mdb和lock.mdb两个文件。
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
才能够写数据库。
3.3 查询
查单条记录用get(key),遍历数据库用cursor。
#!/usr/bin/env pythonimport lmdbenv = lmdb.open("students");# txn = env.begin(write=True);txn = env.begin();print txn.get(str(2));for key, value in txn.cursor(): print (key, value);env.close();
运行一下,输出结果为:
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");
运行一下,输出结果为:
转载自:
- http://blog.csdn.net/haluoluo211/article/details/54428026
- http://www.jianshu.com/p/66496c8726a1
阅读全文
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文件
- ButterKnife8.0+ 与 Dagger2.+的使用踩过的坑
- ZOJ 3475 The Great Wall I
- spring data jpa 表不关联多表查询
- 测试前准备
- clipboradData对象
- Python lmdb使用
- HDU 3660
- 取石子(一) (南阳理工oj 题目23)
- Python多线程(1)——介绍
- Linux Shell下条件语句
- Caused by: java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
- js爬楼效果实现
- Summer Training day4 欧拉降幂
- UVA1252TwentyQuestions