【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?
1. 概述
1.1 媒介
比来用Caffe跑本身的数据集,须要进修LMDB和LevelDB,趁此机会复习了SQLite和MySQL的应用,一路整顿在此。
代码:https://github.com/liquidconv/py4db
1.2 情况
应用Ubuntu 14.04,Python 2.7.6。
2. SQLite
2.1 预备
SQLite是一种嵌入式数据库,它的数据库就是一个文件。Python 2.5x以上版本内置了SQLite3,应用时直接import sqlite3即可。
概括地讲,操作SQLite的流程是:
- 经由过程sqlite3.open()创建与数据库文件的连接对象connection;
- 经由过程connection.cursor()创建光标对象cursor;
- 经由过程cursor.execute()履行SQL语句;
- 经由过程connection.commit()提交当前的事务,或者经由过程cursor.fetchall()获得萌芽结不雅;
- 经由过程connection.close()封闭与数据库文件的连接。
http://www.runoob.com/sqlite/sqlite-python.html
总结起来就是用cursor.execute()履行SQL语句,改变数据(插入、删除、修改)时用connection.commit()提交变革,萌芽数据时用cursor.fetchall()获得萌芽结不雅。
2.3 操作实例
2.3.1 建立数据库与建立表
直接来看例子:
test_lmdb.py
这里conn是与数据库文件test.db的连接对象,c是conn的光标对象,经由过程c.execute()履行建表操作,创建了简单的学生信息表(学号,名字),经由过程conn.commit()提交,最后用conn.close()封闭连接。
conn.open()发明文件不存在时会主动创建,这里应用了文件“test.db”,也可以应用“:memory:”建立内存数据库。
2.3.2 插入、删除、修改
做的工作照样异常简单易懂的,向学生信息表中插入(1,Alice)、(2,Bob)、(3,Peter)三笔记录,删除(1,Alice),修改(3,Peter)为(3,Mark)。
“?”是sqlite3中的┞芳位符,execute时会用第二个参数元组里的元素按次序调换。官方文档里建议出于安然推敲,不要直接用python做字符串拼接。
2.3.3 萌芽
直接在膳绫擎的代码commit之后加上:
运行一下,输出结不雅为:
test_query.py
fetchall()返回的是记录数组,可以经由过程WHERE子句做更过细的选择。
2.3.4 完全的例子
把膳绫擎的操作写成函数情势:
运行一下,输出结不雅为:
运行一下,输出结不雅为:
test_sqlite.py
之后用的例子都是这个简单的学生信息表(学号,姓名)。
具体的sqlite3模块API可以看这里:
3. MySQL
3.1 预备
安装MySQL:
安装MySQLdb:
应用时import MySQLdb(留意大年夜小写)。
3.2 操作流程
同为关系型数据库,MySQL的操作办法和SQLite是大年夜同小异的。建立连接对象与光标对象,用execute()履行SQL语句,commi()提交事物,fetchall()获得萌芽结不雅。
3.3 操作实例
直接看MySQL版本的完全例子:
比较后可以发明差别仅是建立连接时参数复杂一些,同时须要用select_db()选择数据库。
test_mysql.py
4. LMDB
4.1 预备
进修LMDB的时刻不禁想到知乎上的提问“有哪些名人经久生活在其他名人的光环下”,说实话感到查它的人根本都是为了用Caffe……
Anyway,LMDB和SQLite/MySQL等关系型数据库不合,属于key-value数据库(把LMDB想成dict会比较轻易懂得),键key与值value都是字符串。
安装:
应用时import lmdb。
4.2 操作流程
概况地讲,操作LMDB的流程是:
- 经由过程env = lmdb.open()打开情况
- 经由过程txn = env.begin()建立事务
- 经由过程txn.put(key, value)进行插入和修改
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 30岁转行做法度榜样员到底行不可?在互联网成长敏捷的今天,很多人会产生如许的设法主意,这篇文┞仿告诉你>>>详细阅读
本文标题:Python操作SQLite/MySQL/LMDB/LevelDB
地址:http://www.17bianji.com/lsqh/40055.html
1/2 1