作家
登录

Python操作SQLite/MySQL/LMDB/LevelDB

作者: 来源: 2017-12-21 17:23:15 阅读 我要评论

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?

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的流程是:

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)