超详细教程】Python + SQLite 零基础入门:实现增删改查全流程(附完整代码)
一、前言:什么是 SQLite?
SQLite 是 Python 自带的轻量级文件型数据库,不需要安装、不需要配置服务,一个 .db 文件就是一个完整的数据库,非常适合小型项目和本地数据存储。
本文将带你实现数据库的 4 个核心操作(增、删、改、查),并附上逐行代码解释,保证你看完就能上手。
二、SQLite 核心特点
-
零安装、零配置
不需要像 MySQL 一样安装服务、配置账号密码,导入模块就能直接操作。 -
文件型数据库
所有数据表、数据全部保存在单个.db文件中,复制文件即可完成备份与迁移。 -
无服务器架构
属于嵌入式数据库,依附程序运行,占用资源极低,适合本地小型存储。 -
支持标准 SQL 语法
完全通用 SQL 语句,掌握后可无缝衔接 MySQL、Oracle 等主流数据库。-
跨平台兼容Windows / Mac / Linux / 移动端全平台通用,兼容性极强。
-
-
支持事务机制
具备事务提交、回滚能力,保证数据操作安全,防止数据错乱。 -
免费开源
个人、商用项目都可以免费使用,无版权限制。
三、适用场景
1、学生学习 SQL 语法、数据库入门练习
2、小型桌面程序、本地工具数据存储
3、爬虫本地缓存、简易数据持久化
4、轻量化项目、离线软件本地存储
5、移动端、嵌入式设备数据保存
四、准备工作
只需要安装好 Python 环境即可,无需额外安装任何库,sqlite3 是 Python 自带模块。
五、逐步代码详细解释(可直接运行)
1、模块的导入
命令:import sqlite3

2、连接数据库
# 连接数据库,如果 mydata.db 文件不存在,会自动创建
create_sql = sqlite3.connect('mydata.db') # 创建打开数据库文件
# 检测数据库是否连接成功
print("数据库连接成功") # 文件生成在你代码同目录下
运行结果如下:
注意:如果没生成你.db文件就代表代码没实现。具体看报错问题。

3、创建游标(相当于数据库的"操作手柄")
# 创建游标(相当于数据库的"操作手柄")
# 所有增删改查操作,都必须通过游标来执行
cursor = create_sql.cursor() # 相当于数据库操作手柄
# 检测是否创建成功
print("\n游标创建成功")
运行结果如下:

4、创建数据表(如果表不存在才创建)
# 创建数据表(如果表不存在才创建)
# 表名:user
# 字段说明:
# - id:主键,自动增长,每条数据的唯一标识
# - username:用户名,文本类型,不能为空
# - age:年龄,整数类型
# - address:地址,文本类型
sql = '''
CREATE TABLE IF NOT EXISTS user(
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
address TEXT,
age INTEGER
)
'''
cursor.execute(sql)
# 检测数据表是否创建成功
print("\n数据表创建成功")
运行结果如下:

5. 插入数据(增 C - Create)
# 插入数据
# 使用 ? 占位符传递数据,安全又不容易出错
cursor.execute( "INSERT INTO user (username, age, address) VALUES (?, ?, ?)", ("张三", 20, "北京") )
# 提交事务,将数据真正写入数据库
create_sql.commit()
# 检测数据是否插入成功
print("数据插入成功")
运行结果如下:

6、查询验证数据
# 查询验证数据
# SELECT * FROM user:查询 user 表中的所有数据,* 代表查询所有字段
# fetchall():获取所有查询结果,返回格式为 列表套元组,例如 [(1, '张三', 20, '北京')]
# 除了 fetchall(),还有两个常用方法:
# 1、fetchone():只获取查询结果的第一条数据
# 2、fetchmany(n):获取查询结果的前 n 条数据
cursor.execute("SELECT * FROM user")
result = cursor.fetchone()
# 验证数据查询的数据是否与我们写入的一致。
print(f"\n打印查询的结果:{result}")
运行结果如下:

7. 修改数据
# UPDATE user SET age = ? WHERE username = ?:修改数据的 SQL 语句
# SET age = ?:指定要修改的字段和新值
# WHERE username = ?:定位要修改的目标数据,避免修改所有数据
# create_sql.commit():提交事务,保存修改
# 1、执行修改操作
cursor.execute(
"UPDATE user SET age = ? WHERE username = ?",
(40, "张三")
)
# 提交事务,保存修改
create_sql.commit()
# 2. 重新查询数据,才能看到修改后的结果
cursor.execute("SELECT * FROM user WHERE username = ?", ("张三",))
change_result = cursor.fetchone()
print(f"\n打印修改后的结果:{change_result}")
注意:查询的时候,取到的是第一条修改后的数据,所以会看不到变化,最好删掉.db文件重新执行就可以看到变化。
运行结果如下:

8. 删除数据
# 1. 执行删除操作
cursor.execute(
"DELETE FROM user WHERE username = ?",
("张三",) # 注意这里必须是元组,单个值后面要加逗号
)
# 必须提交事务,删除才会生效
create_sql.commit()
print("数据删除成功")
# 2. 删除后查询验证(确认数据已经被删掉)
cursor.execute("SELECT * FROM user WHERE username = ?", ("张三",))
delete_result = cursor.fetchone()
print(f"删除后查询结果:{delete_result}") # None = 数据库里已经没有这条数据了,删除成功
运行结果如下:

9、关闭连接
# 关闭连接
cursor.close()
create_sql.close()

操作结束必须关闭,释放系统资源,避免占用。
六、常见报错解决方案
-
表不存在报错第一次运行自动建表,不要先执行插入、查询语句。
-
字段不存在报错修改了表结构后,删除旧 mydata.db 文件,重新运行生成新表。
-
数据不保存增删改操作后,必须加
conn.commit()提交事务。
更多推荐
所有评论(0)