Python已经内置了SQLite3,所以可以直接使用import语句导入SQLite3模块。Python操作数据库的通用流程图如下:?
创建SQLite数据库文件
# 使用SQLite
# 创建一个mrsoft.db的数据库文件,创建一个user表,表中包含id和name两个字段
import sqlite3
#连接到SQLite数据库
#创建数据库文件,若文件不存在,则会自动在同级目录下创建文件
conn = sqlite3.connect('mrsoft.db')
#创建一个游标Cursor
cursor = conn.cursor()
#执行SQL语句,创建表
cursor.execute('create table user(id int(10) primary key,name varchar(20))')
#关闭游标
cursor.close()
#关闭Connection连接
conn.close()
运行结果
?这是因为数据库文件已经存在。
操作SQLite
1.新增用户信息
新增信息,使用 insert into 表名(字段名1,字段名2,字段名3,...字段名3) values(字段值1,字段值2,字段值3,...字段值n)
由于是新增数据,所以需要使用commit()方法提交事务。因为对于增加,修改,和删除操作,使用commit()方法提交事务后,如果相应操作失败,可以使用
rollback()回滚到操作之前的状态。
import sqlite3
#连接到SQLite数据库
#创建数据库文件,若文件不存在,则会自动在同级目录下创建文件
conn = sqlite3.connect('mrsoft1.db')
#创建一个游标Cursor
cursor = conn.cursor()
#执行SQL语句,创建表
cursor.execute('create table user(id int(10) primary key,name varchar(20))')
cursor.execute('insert into user(id,name) values(001,"张三")')
cursor.execute('insert into user(id,name) values(002,"李四")')
cursor.execute('insert into user(id,name) values(003,"王二")')
#关闭游标
cursor.close()
#提交事务
conn.commit()
#关闭Connection连接
conn.close()
#再次运行,如果出现
再次运行,如果出现则说明插入成功。
2 查询数据
查询数据,使用SQL语句:select 字段名1,字段名2,字段名3... from 表名 where 查询条件
查询数据通常使用如下3种方式:
fetchone():获取查询结果集中的下一条记录
fetchmany(size):获取指定数量的数据
fetchall():获取结果集的所有记录
import sqlite3
#连接到SQLite数据库
#创建数据库文件,若文件不存在,则会自动在同级目录下创建文件
conn = sqlite3.connect('mrsoft2.sql')
#创建一个游标Cursor
cursor = conn.cursor()
#执行SQL语句,创建表
cursor.execute('create table user(id int(10) primary key,name varchar(20))')
cursor.execute('insert into user(id,name) values(001,"张三")')
cursor.execute('insert into user(id,name) values(002,"李四")')
cursor.execute('insert into user(id,name) values(003,"王二")')
#执行查询语句
cursor.execute('select * from user')
#获取查询结果
result1 = cursor.fetchone()
print('result1:',result1) #使用fetchone()方法返回结果为为元组
#关闭游标
cursor.close()
#提交事务
conn.commit()
#关闭Connection连接
conn.close()
?运行结果为:
若改为?
result2 = cursor.fetchmany(2)
print('result2:',result2) #使用fetchmany()结果返回列表,列表元素为元组
则运行结果为:
?
?若改为
result3 = cursor.fetchall()
print('result3:',result3) #使用fetchall()结果返回列表,列表结果为元组
则运行结果为:
?
若改为
#执行查询语句
cursor.execute('select * from user where id >', (1,))
#获取查询结果
result4 = cursor.fetchall()
print('result4:',result4) #使用fetchall()结果返回列表,列表结果为元组
?相当于
select * from user where id > 1
则运行结果为:
[(2,'李四'),(3,'王二')]
3 修改表数据
修改数据使用SQL语句:update 表名 set 字段名 = 字段值 where 查询条件
import sqlite3
#连接到SQLite数据库
#创建数据库文件,若文件不存在,则会自动在同级目录下创建文件
conn = sqlite3.connect('mrsoft2.sql')
#创建一个游标Cursor
cursor = conn.cursor()
#执行修改语句
cursor.execute('update user set name = ? where id = ?',('小明',1))
#执行查询语句
cursor.execute('select * from user')
#获取查询结果
result3 = cursor.fetchall()
print('result3:',result3) #使用fetchall()结果返回列表,列表结果为元组
#关闭游标
cursor.close()
#提交事务
conn.commit()
#关闭Connection连接
conn.close()
结果为:
4 删除表信息
删除表信息使用SQL语句:delete from 表名 where 查询条件
import sqlite3
#连接到SQLite数据库
#创建数据库文件,若文件不存在,则会自动在同级目录下创建文件
conn = sqlite3.connect('mrsoft2.sql')
#创建一个游标Cursor
cursor = conn.cursor()
#执行删除语句
cursor.execute('delete from user where id = ?',(1,))
#执行查询语句
cursor.execute('select * from user')
#获取查询结果
result3 = cursor.fetchall()
print('删除后的查询结果result3:',result3) #使用fetchall()结果返回列表,列表结果为元组
#关闭游标
cursor.close()
#提交事务
conn.commit()
#关闭Connection连接
conn.close()
?结果为:
?
|