Python操作SQLite
1.导入sqlite数据库模块
Python中使用sqlite3模块操作SQLite。从Python 2.5以后,sqlite3成为内置模块,不需要额外安装,只需要导入即可。
import sqlite3
图8-6 事务提交
2.创建/打开数据库
sqlite3模块中使用connect方法创建/打开数据库,需要指定数据库路径,如果数据库存在则打开,不存在则创建一个新的数据库。
con = sqlite3.connect('D:\test.db')
不仅可以在硬盘上创建数据库文件,还可以在内存中创建。
con = sqlite3.connect(':memory:')
3.数据库连接对象
上面通过connect方法返回的con对象,即是数据库连接对象,它提供了以下方法:
·cursor()方法用来创建一个游标对象。
·commit()方法用来事务提交。
·rollback()方法用来事务回滚。
·close()方法用来关闭一个数据库连接。
4.游标对象的使用
对数据库的查询需要使用到游标对象,首先通过cursor()方法创建一个游标对象:
cur = con.cursor()
游标对象有以下方法支持数据库的操作:
·execute()用来执行sql语句。
·executemany()用来执行多条sql语句。
·close()用来关闭游标。
·fetchone()用来从结果中取一条记录,并将游标指向下一条记录。
·fetchmany()用来从结果中取多条记录。
·fetchall()用来从结果中取出所有记录。
·scroll()用于游标滚动。
5.建表
首先使用游标对象创建一个person表,包含id、name、age等3
列,代码如下:
cur.execute(' CREATE TABLE person (id integer primary key,name varchar(20),
age integer)')
6.插入数据
向person表中插入两条数据。插入数据一般有两种做法,第一种做法是直接构造一个插入的SQL语句,代码如下:
data="0,'qiye',20"
cur.execute(' INSERT INTO person VALUES (%s)'%data)
但是这种做法是非常不安全的,容易导致SQL注入。另一种做法使用占位符“”的方式来规避这个问题,代码如下:
cur.execute(' INSERT INTO person VALUES (,,)',(0,'qiye',20))
还可以使用executemany()执行多条SQL语句,使用
executemany()方法比循环使用execute()方法执行多条SQL语句效率高很多。
cur.executemany(' INSERT INTO person VALUES (,,)',[(3,'marry',20),(4,'jack',20)])
这两种方法插入数据都不会立即生效,需要使用数据库对象con
进行提交操作:
如果出现错误,还可以使用回滚操作:
con.commit()
7.查询数据
查询person表中的所有数据,代码如下:
cur.execute('SELECT * FROM person')
要提取查询数据,游标对象提供了fetchall()和fetchone()方法。fetchall()方法获取所有数据,返回一个二维的列表。
fetchone()方法获取其中的一个结果,返回一个元组。使用方法如下:
cur.execute('SELECT * FROM person')
res = cur.fetchall()
for line in res:
print line
cur.execute('SELECT * FROM person')
res = cur.fetchone()
print res
8.修改和删除数据
cur.execute('UPDATE person SET name= WHERE id=',('rose',1))
cur.execute('DELETE FROM person WHERE id=',(0,))
con.commit()
con.close()
注意 执行完所有操作记得关闭数据库,插入或者修改中文数据时,记得在中文字符串之前加上“u”。
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛