用 SQLite 做轻量数据存储:零部署的本地数据库入门
很多刚上手后端或数据分析的朋友,一提到「数据库」就想到装 MySQL、配账号、建连接池,其实如果数据量不大、只有单机访问,SQLite 往往是更合适的选择:它不是「简化版数据库」,而是一个嵌入式的完整关系数据库,整个库就是磁盘上的一个文件,不需要独立服务进程,Python 内置 sqlite3 模块就能直接用。
## 为什么选 SQLite
第一,零部署。拷贝文件就是备份,换机器就是迁移,没有端口、没有服务、没有配置文件。第二,标准库支持。Python 自带 sqlite3,不需要 pip 安装任何东西。第三,事务完整。SQLite 支持 ACID 事务,比手写 JSON 文件读写可靠得多——程序中途崩溃也不会出现半截数据。第四,规模够用。单文件几个 GB、百万行级别的表,日常查询性能完全够用。
## 十分钟上手
建库建表只需要三行代码:
```python
import sqlite3
conn = sqlite3.connect("app.db")
conn.execute("CREATE TABLE IF NOT EXISTS visits (id INTEGER PRIMARY KEY, url TEXT, ts TEXT)")
```
插入数据建议始终用参数化查询,既防 SQL 注入,也省去转义烦恼:
```python
conn.execute("INSERT INTO visits (url, ts) VALUES (?, ?)", ("/index", "2026-11-03 06:00:00"))
conn.commit()
```
查询同样直观:
```python
rows = conn.execute("SELECT url, COUNT(*) AS n FROM visits GROUP BY url ORDER BY n DESC LIMIT 10").fetchall()
```
如果写的是 Web 服务,记得在并发上做一个选择:SQLite 的写操作是整库加锁,多线程写入时给每个请求单独建连接(或用 `check_same_thread=False` 配合锁),读多写少的场景则几乎不用操心。
## 什么时候不该用 SQLite
边界也很清晰:需要多台机器同时写、数据量到了几十 GB、或者有大量高并发写入时,就该换 MySQL/PostgreSQL 这类客户端-服务端数据库了。另外 SQLite 的用户权限体系很弱,它假设文件本身是受保护的,不适合把库文件直接暴露给不可信环境。
## 小结
工具选型的原则是「够用且最简单」:本地工具的数据落盘、小型网站的缓存与统计、脚本任务的中间结果,SQLite 都是省心之选。先用 `sqlite3` 把数据管起来,等规模真的长大了再迁移,迁移成本也远比一开始就背上整套数据库运维要低。
- 点赞
- 收藏
- 关注作者
评论(0)