您现在的位置: 365建站网 > 365学习 > Python操作SQLite(创建/连接/查询/插入/修改/删除)的方法

Python操作SQLite(创建/连接/查询/插入/修改/删除)的方法

文章来源:365jz.com     点击数:189    更新时间:2018-01-24 11:51   参与评论

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”。

 

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (189人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------