目录
数据库编程(一)
操作SQLite3数据库
基本流程
使用SQLite3创建表
使用SQLite3插入数据
使用SQLite3查询数据
使用SQLite3修改数据
数据库编程(一)
操作SQLite3数据库
从python3.X版本开始,在标准库中已经内置了SQLite3模块,它可以支持SQLite3数据库的访问和相关的数据库操作。在需要操作SQLite3数据库时,只须在程序中导入SQLite3模块即可。python语言操作SQLite3数据库的基本流程如下:
基本流程
(1)导入相关库或模块
(2)使用connect()链接数据库并获取数据库连接对象。它提供了以下方法:
方法 | 作用 |
.cursor() | 创建一个游标对象 |
.commit() | 处理事务提交 |
.rollback() | 处理事务回滚 |
.close() | 关闭一个数据库连接 |
(3)使用con.cursor()获取游标对象
(4)使用游标对象的方法(execute()、executemany()、fetchall()等)来操作数据库,实现插入、修改和删除操作,并查询获取显示相关的记录。在python程序中,连接函数sqlite3.connect()有如下两个常用参数:
<1>database:表示要访问的数据库名
<2>timeout:表示访问数据的超时设定。
(5)使用close()关闭游标对象和数据库连接。数据库操作完成之后,必须及时调用其close()方法关闭数据库连接,这样做的目的时减轻数据库服务器的压力。
使用SQLite3创建表
使用sqlite3模块的conn ect方法来创建/打开数据库,需要指定数据库路径,不存在则创建一个新的数据库。
con=sqlite3.connect('e:/sqlitebd/frist.db')
实例对象:
# coding=gbk
'''
1.导入sqlite3模块
2.创建连接sqlite3.connect
3. 创建游标对象
4.编写创建表的spl语句
5.执行spl语句
6.关闭链接
'''
import sqlite3
# 创建链接
con = sqlite3.connect('D:\sqlite3Demo/demo.db')
# 创建游标对象
cur = con.cursor()
# 编写创建表的spl语句
sql = '''create table t_person(
pno INTEGER primary key autoincrement,
pname VARCHAR not null,
age INTEGHR)'''
try:
# 执行spl语句
cur.execute(sql)
print("创建表成功")
except Exception as e:
print(e)
print("创建表失败")
finally:
cur.close # 关闭游标
con.close() # 关闭链接
使用SQLite3插入数据
调用游标对象的execu执行插入的sql,使用executemany()执行插入的多条sql语句,使用executemany()比循环使用 execute()执行多条sql语句效率高
使用SQLite3插入一条语句:
# 导入模块
import sqlite3
# 创建链接
con=sqlite3.connect("D:\sqlite3Demo/demo.db")
#创建游标对象
cur=con.cursor()
#编写插入sql
sql='insert into t_person(pname,age) values (?,?)'
try:
# 执行sql
cur.execute(sql, ('张三', 24))
con.commit()
print("事务插入数据成功")
except Exception as e:
print(e)
con.rollback()
print("插入事务失败")
finally:
cur.close() #关闭游标链接
con.close() #关闭数据库链接
使用SQLite3插入多条语句:
# 导入模块
import sqlite3
# 创建链接
con = sqlite3.connect("D:\sqlite3Demo/demo.db")
# 创建游标对象
cur = con.cursor()
# 编写插入sql
sql = 'insert into t_person(pname,age) values (?,?)'
try:
# 执行插入多条数据的sql
cur.executemany(sql, [('张三', 24),('小李',23),("小张",23)])
con.commit()
print("事务插入数据成功")
except Exception as e:
print(e)
con.rollback()
print("插入事务失败")
finally:
cur.close() #关闭游标链接
con.close() #关闭数据库链接
使用SQLite3查询数据
查询数据,游标对象提供了fetchall()和fetchone()方法。fetchall()方法获取所有数据,返回一个列表。fetchone()方法获取其中一个结果,返回一个元组。
fetchall()查询所有数据:
# 导入sqlite3模块
import sqlite3
# 创建链接
con = sqlite3.connect('D:/sqlite3Demo/demo.db')
# 创建游标对象
cur = con.cursor()
# 创建查询sql
sql = 'select * from t_person'
try:
cur.execute(sql)
# 获取结果集
person_all = cur.fetchall()
print(person_all)
for person in person_all:
print(person)
except Exception as e:
print(e)
print("查询所有数据失败")
finally:
cur.close() # 关闭游标
con.close() # 关闭链接
fetchone()查询单个数据:
# 导入sqlite3模块
import sqlite3
# 创建链接
con = sqlite3.connect('D:/sqlite3Demo/demo.db')
# 创建游标对象
cur = con.cursor()
# 创建查询sql
sql = 'select * from t_person'
try:
cur.execute(sql)
# 获取结果集
person = cur.fetchone()
print(person)
except Exception as e:
print(e)
print("查询所有数据失败")
finally:
cur.close() # 关闭游标
con.close() # 关闭链接
使用SQLite3修改数据
SQLite3修改数据实例:
# 导入模块
import sqlite3
# 创建链接
con=sqlite3.connect('D:/sqlite3Demo/demo.db')
# 创建游标对象
cur=con.cursor()
# 编写修改的SQL语句
sql='update t_person set pname=? where pno=?'
# 执行sql
try:
cur.execute(sql,('小名',1))
# 提交事务
con.commit()
print("修改成功")
except Exception as e:
print(e)
print("修改失败")
con.rollbake()
finally:
cur.close() # 关闭游标
con.close() # 关闭链接
SQLite3删除数据实例:
# 导入模块
import sqlite3
# 创建链接
con=sqlite3.connect('D:/sqlite3Demo/demo.db')
# 创建游标对象
cur=con.cursor()
# 编写修改的SQL语句
sql='delete from t_person where pno=?'
# 执行sql
try:
cur.execute(sql, (1,))
# 提交事务
con.commit()
print("删除成功")
except Exception as e:
print(e)
print("删除失败")
con.rollbake()
finally:
cur.close() # 关闭游标
con.close() # 关闭链接