当前位置:首页>python>sqlite3,一个内置的 Python 库

sqlite3,一个内置的 Python 库

  • 2026-09-11 00:59:50
sqlite3,一个内置的 Python 库

大家好,我是木木。

今天给大家分享一个内置的 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 或专门的数据仓库。

上线检查

  1. 所有外部输入都使用参数绑定,不要拼 SQL。
  2. 文件数据库要考虑备份、锁等待和并发写入策略。
  3. 需要事务时显式提交初始化数据,避免误回滚。

总结

sqlite3 是最容易被低估的标准库之一。它简单、内置、可靠,适合把很多小工具从“临时文本文件”升级成真正可查询的数据存储。

最新文章

随机文章