概述
你写个小脚本需要装 MySQL?搞个大项目又觉得 PostgreSQL 太重?SQLite 就是那个"刚刚好"的选择。
它没有服务端进程,数据存在一个 .db 文件里。复制文件就是备份,删文件就是销毁。Python、Node.js、Go 原生支持,几乎不用配任何东西就能跑。
这篇教程教你在一台干净的 Ubuntu 服务器上搭好 SQLite 开发环境,包括命令行工具、Python/Node.js 驱动、以及一个轻量级 Web 管理面板。
准备工作
你需要以下条件:
- 一台 Linux 机器(Ubuntu 22.04 / Debian 12 最佳)
- 基本命令行操作能力
- 约 50MB 磁盘空间
先确认系统是不是干净的:
cat /etc/os-release | grep PRETTY_NAME
df -h / | tail -1
输出显示 Ubuntu 或 Debian,磁盘剩余大于 100MB 就行。
安装步骤
1. 安装 SQLite3 和基础工具
SQLite 在大多数 Linux 发行版里已经是默认安装的。先验证一下:
sqlite3 --version
如果输出了版本号(比如 3.45.1),说明已经有了。没装的话跑这个:
sudo apt update && sudo apt install -y sqlite3 libsqlite3-dev
再确认一遍版本:
sqlite3 --version
2. 创建你的第一个数据库
SQLite 不需要创建数据库实例,直接操作文件就行:
mkdir -p ~/myproject && cd ~/myproject
sqlite3 app.db
进入交互模式后,你会看到 sqlite> 提示符。先建张表试试:
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
插一条数据:
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
查一下:
SELECT * FROM users;
看到输出就对了。输入 .quit 退出交互模式。
现在看看生成了什么:
ls -lh app.db
file app.db
就是一个几 KB 的文件。把它拷到别的地方,换台机器照样能打开。
3. 安装 Python 开发环境
大多数 Python 项目都用 SQLite。检查 Python 是否就绪:
python3 --version
Python 3.7+ 自带 sqlite3 模块,不需要额外安装。写个脚本验证:
cat > test_db.py << 'EOF'
import sqlite3
conn = sqlite3.connect('app.db')
cursor = conn.cursor()
cursor.execute("SELECT name, email FROM users")
for row in cursor.fetchall():
print(f"用户: {row[0]}, 邮箱: {row[1]}")
conn.close()
print("Python + SQLite 连接成功!")
EOF
python3 test_db.py
输出显示用户信息,说明 Python 驱动工作正常。
如果你用虚拟环境,推荐这样初始化:
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
4. 安装 Node.js 开发环境
Node.js 项目同样可以无缝使用 SQLite。先装 Node:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
node --version
npm --version
创建一个 Node 项目并安装 better-sqlite3:
mkdir -p ~/node-db-test && cd ~/node-db-test
npm init -y
npm install better-sqlite3
写个测试脚本:
cat > test.js << 'EOF'
const Database = require('better-sqlite3');
const db = Database('./app.db');
const stmt = db.prepare('SELECT name, email FROM users');
const rows = stmt.all();
rows.forEach(row => {
console.log(`用户: ${row.name}, 邮箱: ${row.email}`);
});
console.log('Node.js + SQLite 连接成功!');
EOF
node test.js
看到结果就说明 Node.js 环境也搭好了。
5. 安装 DB Browser for SQLite(可选)
命令行够用了,但有时候图形界面更方便。DB Browser 是最流行的 SQLite 可视化工具:
sudo apt install -y sqlitebrowser
启动方式:
sqlitebrowser app.db &
弹出一个窗口,你可以直接浏览表结构、执行 SQL、导出数据。
如果你用的是远程服务器,没有桌面环境,可以用网页版替代方案——SQLite Web:
cd ~
git clone https://github.com/liamks/sqlite-web.git
cd sqlite-web
pip install .
sqlite-web --host 0.0.0.0 --port 8080 ~/myproject/app.db
然后浏览器访问 http://你的服务器IP:8080 就能看到 Web 管理面板了。
验证
全部搭完之后,跑一轮完整验证:
cd ~/myproject
# 1. SQLite 命令行
sqlite3 app.db ".tables"
# 2. Python 连接
python3 test_db.py
# 3. Node.js 连接
cd ~/node-db-test && node test.js
# 4. 数据库文件检查
ls -lh ~/myproject/app.db
四步都通过,环境就算彻底搞定了。
常见问题
Q: 怎么备份 SQLite 数据库?
A: 直接复制 .db 文件就行。如果数据库正在写入,用以下命令做一致性备份:
sqlite3 app.db ".backup backup.db"
Q: 生产环境能用 SQLite 吗?
A: 读多写少的场景完全没问题。高并发写入的话,建议切到 PostgreSQL。SQLite 适合个人项目、小工具、嵌入式场景。
Q: 中文乱码怎么办?
A: SQLite 默认 UTF-8 编码,一般不会出问题。确保终端也设置成 UTF-8:
echo $LANG
输出应该是 zh_CN.UTF-8 或 en_US.UTF-8。
Q: 怎么迁移到 MySQL/PostgreSQL?
A: 先用 .dump 导出 SQL 文件:
sqlite3 app.db .dump > schema.sql
拿到标准 SQL 语句后,导入目标数据库即可。大部分 ORM 框架都能帮你处理迁移。
SQLite 的魅力就在于"没什么可配的"。装好就能用,用完文件一删干净。适合快速原型、小型项目、以及不想被数据库绑架的场景。
你的下一个项目,要不要试试只用一个 .db 文件搞定一切?