python lmdb使用
2017-01-14 18:16
435 查看
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 python import lmdb env = lmdb.open("students");
运行一下,查看当前目录的变化:
set_env.py
可以看到当前目录下多了students目录,里面有data.mdb和lock.mdb两个文件。
4.3.2 插入、删除、修改
插入与修改都用put实现,删除用delete实现。#!/usr/bin/env python import lmdb env = 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);
运行一下,输出结果为:
test_query.py
注意上次commit()之后要用env.begin()更新txn。
4.3.4 完整的例子
#!/usr/bin/env python import lmdb import os, sys def 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");
运行一下,输出结果为:
相关文章推荐
- Caffe学习笔记(二):使用Python生成caffe所需的lmdb文件和txt列表清单文件
- 【Python配置】lmdb使用
- caffe使用python创建lmdb
- Python lmdb使用
- 用Python将多标签数据存入caffe使用的HDF5&LMDB格式
- 在python 中使用正则表达式
- 关于在组件GIS开发中使用Python的一点补充说明
- ctypes: 使用python调用C编写的动态链接库
- 如何使用Python发送带附件的邮件
- 使用python写的代码行数统计程序
- 在python 中使用 windows dll
- 使用Python语言设计基于HTML的C语言语法加亮显示程序
- Windows下使用Python通过ODBC/ADO访问数据库
- 关于 python 中使用 lambda 表达式的问题
- 在IE中使用Python作为开发脚本
- python 进行多线程编程,使用Semaphore控制线程数
- 使用python进行小游戏编写
- C Java PHP Perl Python 的程序代码美化工具(Pretty Print Program/Source Code Beautifier)使用
- 使用 python 操作 access 数据库
- 在 Python中使用 cout << 'Hello,world!' << endl