大家好,我是木木。
今天给大家分享一个内置的 Python 库,sqlite3。
sqlite3
sqlite3 是 Python 标准库里自带的 SQLite 接口,不需要安装第三方包,就能创建本地数据库、执行 SQL、绑定参数、管理事务。它非常适合命令行工具、桌面应用、小型服务、本地缓存和测试数据准备。很多时候你只是想把数据可靠地落到一个文件里,sqlite3 就已经足够好用。
项目地址:https://github.com/python/cpython/tree/main/Lib/sqlite3
官方文档:https://docs.python.org/3/library/sqlite3.html
三大特点
开箱即用
标准库内置,不需要 pip 安装,脚本、测试和小工具可以直接使用。
SQL 直接
保留 DB-API 风格,参数化查询、游标、连接和事务都比较容易理解。
轻量可靠
SQLite 是嵌入式数据库,适合单机文件存储、原型验证和中小规模本地数据。
最佳实践
安装方式:无需安装,Python 标准库自带 sqlite3。
第一段代码解决的问题是:在内存数据库里建表、插入数据,并用参数化查询筛选结果。
importsqlite3con=sqlite3.connect(":memory:")con.execute("create table users(id integer primary key, name text, points integer)")con.executemany("insert into users(name, points) values(?, ?)",[("Alice",18),("Bob",9),("Cora",21)])forrowincon.execute("select name, points from users where points >= ? order by points desc",(10,)):print(row)
第二段看 Row 工厂。默认返回 tuple 很轻,但业务代码里按字段名访问会更清楚,尤其适合小型查询封装。
importsqlite3con=sqlite3.connect(":memory:")con.row_factory=sqlite3.Rowcon.execute("create table users(id integer primary key, name text, points integer)")con.execute("insert into users(name, points) values(?, ?)",("Alice",18))row=con.execute("select id, name, points from users where name = ?",("Alice",)).fetchone()print("name:",row["name"])print("points:",row["points"])print("keys:",row.keys())
进阶一点看事务。with con: 可以把一组写入放在同一个事务里,出现唯一键冲突时自动回滚本次事务。
importsqlite3con=sqlite3.connect(":memory:")con.execute("create table users(id integer primary key, name text, points integer)")con.executemany("insert into users(name, points) values(?, ?)",[("Alice",18),("Bob",9),("Cora",21)])con.commit()try:withcon:con.execute("insert into users(name, points) values(?, ?)",("Dora",12))con.execute("insert into users(id, name, points) values(?, ?, ?)",(1,"Again",99))exceptsqlite3.IntegrityErrorasexc:print("rollback:",exc.__class__.__name__)print("count:",con.execute("select count(*) from users").fetchone()[0])
环境与版本信息
本文示例使用 Python 3.11,sqlite3 来自 Python 标准库。当前运行环境的 SQLite 能力随 Python 构建时链接的 SQLite 版本而定,生产环境需要确认实际版本和编译选项。
适用场景
适合本地缓存、桌面应用、小型命令行工具、测试夹具、原型验证,以及单机读多写少的数据文件。
不适用场景
如果你需要多节点部署、高并发写入、复杂权限管理或大型分析查询,应该考虑 PostgreSQL、MySQL 或专门的数据仓库。
上线检查
总结
sqlite3 是最容易被低估的标准库之一。它简单、内置、可靠,适合把很多小工具从“临时文本文件”升级成真正可查询的数据存储。