SQLite是python自带的一款基于内存或硬盘的、开源的、关系型的轻量级数据库。这意味着无需下载安装SQLite数据库产品和对应的数据库驱动程序,可以被python语言以模块导入方式直接调用。其位置在python的安装路径为Lib/sqlite3/。
对关系型数据库进行读写操作,需要建立如下几个操作步骤:
第一步,建立应用系统与数据库的连接;
第二步,需要建立数据库实例,通俗理解是建立一个存储数据库的文件;
第三步,建立对应的表结构;
第四步,往表里写记录,读记录;
第五步,关闭与数据库的连接。
1.建立数据库
# 建立基于内存的数据库
import sqlite3 #导入sqlite3模块
conn = sqlite3.connect(":memory:") #建立一个基于内存的数据库
conn.close() #关闭与数据库的连接
# 建立基于硬盘的数据库
import sqlite3 #导入sqlite3模块
conn = sqlite3.connect('py21.db') #建立一个基于硬盘的数据库实例
conn.close() #关闭与数据库的连接
# 执行代码后,在python的安装路径下生成py21.db文件。
两者区别:基于内存数据库容易丢失,基于硬盘数据可以持久保存基于内存数据读写速度快,基于硬盘数据读写速度慢基于内存数据存储容量受内容受内容可用空间限制,基于硬盘数据存储容量受限于硬盘可用空间。
2.建立表
在关系型数据库中,需要创建关系型特征的表结构,才能往表里写入数据以及进行数据库的操作。
import sqlite3 #导入sqlite3模块
conn = sqlite3.connect('py21') #建立一个基于硬盘的数据库实例
cur = conn.cursor() #通过建立数据库游标对象,准备读写操作
# 创建表
cur.execute('create table if not exists goods(id varchar(10) primary key, name varchar(10) not null,inventory varchar(10)')
cur.execute(f'insert into goods values("112233","电池","10")') #插入一行记录结果信息
conn.commit() #保存提交,确保数据保存成功
conn.close() #关闭与数据库的连接
3.数据操作
import sqlite3 # 导入sqlite3模块
conn = sqlite3.connect('py21') # 建立一个基于硬盘的数据库实例
cur = conn.cursor() # 通过建立数据库游标对象,准备读写操作
# cur.execute("create table student(name varchar(10),sex varchar(10),phone varchar(11))") # 创建表
# 增
# cur.execute("insert into student Values('小红','女','11223344551')") # 插入一行记录结果信息
# 查(查单条)
cur.execute('select * from student')
for row in cur.fetchall(): # 以一条记录为元组单位返回结果给row
print(row)
# 改
cur.execute(f'update student set name="小明",sex="男",phone="123" where name="小红"')
# 查全部
cur.execute('select * from student')
print(cur.fetchall())
# 删
cur.execute(f'delete from student where name="小红"')
# 查全部
cur.execute('select * from student')
print(cur.fetchall())
conn.commit() # 保存提交,确保数据保存成功
conn.close() # 关闭与数据库的连接
事务处理
try:
# 执行sql语句
cur.execute('insert into student values("李明","男","112233")')
# 提交数据
conn.commit()
except Exception as e:
print(e)
# 如果发生错误,回滚
conn.rollback()