SQLite是一种嵌入式数据库(发音:se k lai t),它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。
在使用SQLite前,我们先要搞清楚几个概念:
(1)表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,表和表之间通过外键关联。
(2)要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;
(3)连接到数据库后,需要打开游标,称之为Cursor,游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 选择语句相关联。因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。游标对象有以下的操作:
execute() – 执行sql语句
executemany() – 执行多条sql语句
close() – 关闭游标
fetchone() – 从结果中取一条记录,并将游标指向下一条记录
fetchmany() – 从结果中取多条记录
scroll() – 游标滚动
在python下使用SQLite数据库,基本按照下面几步:
(1)用sqlite3.connect创建数据库连接,假设连接对象为conn;
(2)如果该数据库操作不需要返回结果,就直接用conn.execute查询,根据数据库事务隔离级别的不同,可能修改数据库需要conn.commit;
(3)如果需要返回查询结果则用conn.cursor创建游标对象cur, 通过cur.execute查询数据库,用cur.fetchall/cur.fetchone/cur.fetchmany返回查询结果;
(4)关闭cur, conn。
下面是sqlite数据库使用的python程序:
# 导入SQLite数据库模块
import sqlite3
# 连接到SQLite数据库
# 数据库文件是userdata.db,如果文件不存在,会自动在当前目录创建
con = sqlite3.connect("userdata.db")
# 创建一个Cursor游标
cur = con.cursor()
# 存储数据
cur.execute("insert into userinfo values ('%s','%s','%s');" %
(iddata, iddata + '.mat', iddata + '.jpg'))
con.commit() #提交事务
# 读取数据
cur.execute("select * from userinfo;") #从表中查找
results = cur.fetchall() #获得查询结果集
# 删除数据
cur = con.cursor()
cur.execute("delete from userinfo where id = '%s';" % (iddata))
con.commit() #提交事务
# 关闭游标
cur.close()
# 关闭数据库连接
con.close()