SQLite是一种嵌入式数据库,它的数据库就是一个文件。SQLite将整个数据库,包括定义、表、索引以及数据本身,作为一个单独的、可跨平台使用的文件存储在主机中。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中。Python就内置了SQLite3,所以在Python中使用SQLite,不需要安装任何模块,直接使用。
1 创建数据库文件
由于Python中已经内置了SQLite3,所以可以直接使用import语句导入SQLite3模块。
创建一个mrsoft.db的数据库文件,然后执行SQL语句创建一个user(用户表),user表包含id和name两个字段。具体代码如下:
import sqlite3
# 连接到SQLite数据库
# 数据库文件是mrsoft.db,如果文件不存在,会自动在当前目录创建
conn = sqlite3.connect('mrsoft.db')
# 创建一个Cursor
cursor = conn.cursor()
# 执行一条SQL语句,创建user表
cursor.execute('create table user (id int(10) primary key, name varchar(20))')
# 关闭游标
cursor.close()
# 关闭Connection
conn.close()
2 操作SQLite
(1)新增用户数据信息
例如,向user表中插入3条用户信息。此外,由于是新增数据,需要使用commit()方法提交事务。因为对于增加、修改和删除操作,使用commit()方法提交事务后,如果相应操作失败,可以使用rollback()方法回滚到操作之前的状态。新增用户数据信息具体代码如下:
import sqlite3
# 连接到SQLite数据库
# 数据库文件是mrsoft.db
# 如果文件不存在,会自动在当前目录创建
conn = sqlite3.connect('mrsoft.db')
# 创建一个Cursor
cursor = conn.cursor()
# 执行一条SQL语句,插入一条记录
cursor.execute('insert into user (id, name) values ("1", "MRSOFT")')
cursor.execute('insert into user (id, name) values ("2", "Andy")')
cursor.execute('insert into user (id, name) values ("3", "明日科技小助手")')
# 关闭游标
cursor.close()
# 提交事务
conn.commit()
# 关闭Connection
conn.close()
(2)查看用户数据信息
查看用户信息的代码与插入数据信息大致相同,不同点在于使用的SQL语句不同。此外,查询数据时通常使用如下3种方式:
l fetchone():获取查询结果集中的下一条记录。
l fetchmany(size):获取指定数量的记录。
l fetchall():获取结果集的所有记录。
例如,分别使用fetchone、fetchmany和fetchall这3种方式查询用户信息,具体代码如下:
import sqlite3
# 连接到SQLite数据库,数据库文件是mrsoft.db
conn = sqlite3.connect('mrsoft.db')
# 创建一个Cursor
cursor = conn.cursor()
# 执行查询语句
cursor.execute('select * from user')
# 获取查询结果
result1 = cursor.fetchone()
print(result1)
# 关闭游标
cursor.close()
# 关闭Connection
conn.close()
使用fetchone()方法返回的result1为一个元组,执行结果如下:
(1,'MRSOFT')
修改实例代码,将获取查询结果的语句块代码修改为:
result2 = cursor.fetchmany(2) # 使用fetchmany方法查询多条数据
使用fetchmany()方法传递一个参数,其值为2,默认为1。返回的result2为一个列表,列表中包含2个元组,运行结果如下:
[(1,'MRSOFT'),(2,'Andy')]
修改实例代码,将获取查询结果的语句块代码修改为:
result3 = cursor.fetchall() # 使用fetchmany方法查询多条数据
使用fetchall()方法返回的result3为一个列表,列表中包含所有user表中数据组成的元组,运行结果如下:
[(1,'MRSOFT'),(2,'Andy'),(3,'明日科技小助手')]
修改实例代码,将获取查询结果的语句块代码修改为:
cursor.execute('select * from user where id > ?',(1,))
result3 = cursor.fetchall()
在select查询语句中,使用问号作为占位符代替具体的数值,然后使用一个元组来替换问号(注意,不要忽略元组中最后的逗号)。上述查询语句等价于:
cursor.execute('select * from user where id > 1')
执行结果如下:
[(2,'Andy'),(3,'明日科技小助手')]
说明:使用占位符的方式可以避免SQL注入的风险,推荐使用这种方式。
(3)修改用户数据信息
例如,将SQLite数据库中user表ID为1的数据name字段值“mrsoft”修改为“MR”,并使用fetchAll获取表中的所有数据。具体代码如下:
import sqlite3
# 连接到SQLite数据库,数据库文件是mrsoft.db
conn = sqlite3.connect('mrsoft.db')
# 创建一个Cursor:
cursor = conn.cursor()
cursor.execute('update user set name = ? where id = ?',('MR',1))
cursor.execute('select * from user')
result = cursor.fetchall()
print(result)
# 关闭游标
cursor.close()
# 提交事务
conn.commit()
# 关闭Connection:
conn.close()
执行结果如下:
[(1, 'MR'), (2, 'Andy'), (3, '明日科技小助手')]
(4)删除用户数据信息
例如,将SQLite数据库中user表ID为1的数据删除,并使用fetchAll获取表中的所有数据,查看删除后的结果。具体代码如下:
import sqlite3
# 连接到SQLite数据库,数据库文件是mrsoft.db
conn = sqlite3.connect('mrsoft.db')
# 创建一个Cursor:
cursor = conn.cursor()
cursor.execute('delete from user where id = ?',(1,))
cursor.execute('select * from user')
result = cursor.fetchall()
print(result)
# 关闭游标
cursor.close()
# 提交事务
conn.commit()
# 关闭Connection:
conn.close()
执行上述代码后,user表中ID为1的数据将被删除。运行结果如下:
[(2, 'Andy'), (3, '明日科技小助手')]
以上就是“Python使用SQLite数据库教程”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/11409/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料