铜陵网站建设费用,杭州网络推广网络优化,网络营销项目策划书范文,WordPress入门编辑器Python SQLite3 保姆级教程#xff1a;从零开始学数据库操作
本文适合纯新手#xff01;无需任何数据库基础#xff0c;跟着步骤操作即可掌握 SQLite3 的核心用法。 目标#xff1a;让你像用记事本一样轻松操作数据库#xff01; 目录
什么是 SQLite3#xff1f;环境准…Python SQLite3 保姆级教程从零开始学数据库操作
本文适合纯新手无需任何数据库基础跟着步骤操作即可掌握 SQLite3 的核心用法。 目标让你像用记事本一样轻松操作数据库 目录
什么是 SQLite3环境准备连接数据库创建表增删改查CRUD事务与错误处理高级技巧常见问题总结 1. 什么是 SQLite3
SQLite3 是一个轻量级的 嵌入式数据库无需安装独立服务所有数据存储在一个文件中。
✅ 无需配置像操作普通文件一样使用。✅ 跨平台数据库文件可在 Windows/macOS/Linux 共享。✅ 适合小型项目APP 配置、本地缓存、小型网站等。 2. 环境准备
2.1 确认 Python 环境
确保已安装 Python建议 3.6。打开终端输入以下命令
python --version若显示版本号如 Python 3.8.5则正常。若报错需先 安装 Python。
2.2 导入 SQLite3 模块
无需额外安装Python 自带 sqlite3 库直接在代码中导入
import sqlite33. 连接数据库
3.1 连接到磁盘数据库持久化
# 连接到当前目录下的 test.db 文件不存在则自动创建
conn sqlite3.connect(test.db)✅ 文件路径规则 test.db当前目录下的 test.db 文件。/home/user/data.db绝对路径指定位置。 ❗ 注意关闭程序后文件依然存在下次可重新连接。
3.2 连接到内存数据库临时使用
conn sqlite3.connect(:memory:) # 程序关闭后数据消失3.3 创建游标操作数据库的“手”
cursor conn.cursor() # 所有 SQL 操作通过游标执行4. 创建表
4.1 基本语法
# 创建 users 表如果不存在
cursor.execute(CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, # 自增主键name TEXT NOT NULL, # 文本类型不能为空age INTEGER, # 整数类型email TEXT UNIQUE # 唯一约束邮箱不可重复)
)
conn.commit() # 提交事务创建表需要提交4.2 字段类型
类型说明INTEGER整数如 1, -5, 100TEXT字符串如 “Hello”REAL浮点数如 3.14BLOB二进制数据如图片
4.3 验证表是否创建成功
# 查询数据库中所有表名
cursor.execute(SELECT name FROM sqlite_master WHERE typetable)
print(cursor.fetchall()) # 输出[(users,)]5. 增删改查CRUD
5.1 插入数据Create
插入单条数据
# 使用 ? 占位符避免 SQL 注入
cursor.execute(INSERT INTO users (name, age, email)VALUES (?, ?, ?)
, (Alice, 30, aliceexample.com))
conn.commit() # 提交批量插入数据
users [(Bob, 25, bobexample.com),(Charlie, 35, charlieexample.com)
]
cursor.executemany(INSERT INTO users (name, age, email) VALUES (?, ?, ?)
, users)
conn.commit()5.2 查询数据Read
查询所有记录
cursor.execute(SELECT * FROM users)
rows cursor.fetchall() # 获取全部结果
for row in rows:print(row) # 输出(1, Alice, 30, aliceexample.com)条件查询
# 查找年龄大于 28 的用户
cursor.execute(SELECT * FROM users WHERE age ?, (28,))
results cursor.fetchall()
for row in results:print(fID: {row[0]}, 姓名: {row[1]}, 年龄: {row[2]})查询单条记录
cursor.execute(SELECT * FROM users WHERE id ?, (1,))
user cursor.fetchone() # 只获取第一条
print(user) # 输出(1, Alice, 30, aliceexample.com)5.3 更新数据Update
# 将 Alice 的邮箱更新为 new_emailexample.com
cursor.execute(UPDATE usersSET email ?WHERE name ?
, (new_emailexample.com, Alice))
conn.commit()5.4 删除数据Delete
# 删除 ID 为 2 的用户
cursor.execute(DELETE FROM users WHERE id ?, (2,))
conn.commit()6. 事务与错误处理
6.1 什么是事务
事务一组原子性的操作要么全部成功要么全部失败。示例转账操作A 扣款B 加款必须同时成功。
6.2 手动提交与回滚
try:cursor.execute(INSERT INTO users (name) VALUES (David))cursor.execute(INSERT INTO users (name) VALUES (Eve))conn.commit() # 成功则提交
except sqlite3.Error as e:print(出错啦:, e)conn.rollback() # 失败则回滚撤销所有操作6.3 自动提交推荐
使用 with 上下文管理器
with sqlite3.connect(test.db) as conn:cursor conn.cursor()cursor.execute(INSERT INTO users (name) VALUES (Frank))# 无需 commit退出 with 块时自动提交7. 高级技巧
7.1 以字典形式返回结果
默认返回元组可通过 row_factory 改为字典
def dict_factory(cursor, row):return {col[0]: row[idx] for idx, col in enumerate(cursor.description)}conn.row_factory dict_factory
cursor conn.cursor()
cursor.execute(SELECT * FROM users WHERE id 1)
print(cursor.fetchone()) # 输出{id: 1, name: Alice, ...}7.2 使用 SQLite 浏览器查看数据
推荐工具DB Browser for SQLite
可视化查看表结构、数据。直接执行 SQL 语句。 8. 常见问题
Q1代码运行后找不到数据库文件
检查当前目录在代码中添加import os
print(os.getcwd()) # 查看文件实际保存路径使用绝对路径如 sqlite3.connect(/User/name/data.db)
Q2插入数据后查询不到
忘记提交事务确保执行 conn.commit()。查询条件错误检查 WHERE 子句是否拼写正确。
Q3如何备份数据库
直接复制 .db 文件即可SQLite 数据库是单一文件。 9. 总结
通过本教程你已经学会了
连接数据库文件 vs 内存创建表字段类型与约束增删改查参数化查询防注入事务管理提交与回滚高级技巧字典结果、可视化工具
下一步建议
尝试为本地的通讯录、笔记应用添加数据库支持。学习更复杂的 SQL 语法如 JOIN 查询。
遇到问题 随时查阅本文代码示例或使用 SQLite 浏览器调试