| 概念 | MySQL | SQLite |
|---|---|---|
| 架构 | 客户端-服务器 | 嵌入式(无服务器) |
| 数据库 | 服务器中的逻辑分组 | 单个 .db 文件 |
| 启动 | 需要启动 mysqld | 无需启动任何服务 |
| 连接 | 网络连接(TCP/IP) | 直接文件读写 |
| 用户管理 | 有(用户名/密码) | 无(文件权限控制) |
| 并发 | 高并发支持 | 读多写少场景 |
| 适用场景 | 生产环境、多用户 | 开发、测试、小型应用 |
# 需要:服务器地址、端口、用户名、密码、数据库名
DATABASE_URL = "mysql+aiomysql://root:password@localhost:3306/llm_gateway"# 只需要:文件路径
DATABASE_URL = "sqlite+aiosqlite:///./llm_gateway.db"# MySQL
mysql -u root -p
mysql> USE llm_gateway;
# SQLite
sqlite3 llm_gateway.db# MySQL
mysql> SHOW TABLES;
# SQLite
sqlite> .tables# MySQL
mysql> DESCRIBE api_keys;
mysql> SHOW CREATE TABLE api_keys;
# SQLite
sqlite> .schema api_keys
sqlite> PRAGMA table_info(api_keys);# MySQL 和 SQLite 完全相同!
SELECT * FROM api_keys;
SELECT * FROM api_keys WHERE is_active = 1;
SELECT COUNT(*) FROM usage_records;# MySQL
mysqldump -u root -p llm_gateway > backup.sql
# SQLite
sqlite3 llm_gateway.db .dump > backup.sql
# 或者直接复制文件
cp llm_gateway.db backup.db# app/config.py
database_url: str = "sqlite+aiosqlite:///./llm_gateway.db"这表示:
- 数据库文件:
./llm_gateway.db(项目根目录) - 实际路径:
/Users/edy/PythonProject/llm_gateway/llm_gateway.db - 自动创建:如果文件不存在,首次运行时自动创建
只需修改 .env 文件:
# 从 SQLite
DATABASE_URL=sqlite+aiosqlite:///./llm_gateway.db
# 改为 MySQL
DATABASE_URL=mysql+aiomysql://user:password@localhost:3306/llm_gateway注意:切换到 MySQL 前需要:
- 安装 MySQL 服务器
- 创建数据库:
CREATE DATABASE llm_gateway; - 安装驱动:
pip install aiomysql
代码无需修改!SQLAlchemy 会自动适配。
sqlite3 llm_gateway.db.tables -- 列出所有表
.schema -- 显示所有表结构
.schema api_keys -- 显示指定表结构
.mode column -- 列模式显示
.headers on -- 显示列名
.quit -- 退出
.help -- 帮助sqlite3 llm_gateway.db << EOF
.mode column
.headers on
SELECT * FROM api_keys LIMIT 5;
EOF# 相对路径(推荐开发环境)
"sqlite+aiosqlite:///./llm_gateway.db"
# 位置:项目根目录/llm_gateway.db
# 指定子目录
"sqlite+aiosqlite:///./data/llm_gateway.db"
# 位置:项目根目录/data/llm_gateway.db
# 绝对路径
"sqlite+aiosqlite:////var/lib/llm_gateway/llm_gateway.db"
# 注意:4个斜杠!
# 内存数据库(测试用)
"sqlite+aiosqlite:///:memory:"
# 数据在内存中,程序关闭后消失✅ 零配置,开箱即用
✅ 单文件,易于备份和迁移
✅ 轻量级,无需额外进程
✅ 完美适合开发和测试
✅ 跨平台,文件可直接复制
❌ 并发写入性能较低
❌ 不适合高并发场景
❌ 无网络访问(只能本地)
❌ 无用户权限管理
❌ 数据库大小建议 < 1GB
- ✅ 开发和测试环境
- ✅ 小型应用(< 100 并发用户)
- ✅ 嵌入式应用
- ✅ 原型开发
- ✅ 本地工具和脚本
- ❌ 生产环境(高并发)
- ❌ 多服务器部署
- ❌ 需要复杂权限管理
- ❌ 数据库 > 1GB
- ❌ 需要远程访问
# 查看所有表
sqlite3 llm_gateway.db ".tables"
# 查看 API Keys
sqlite3 llm_gateway.db "SELECT id, name, is_active FROM api_keys;"
# 查看使用记录数量
sqlite3 llm_gateway.db "SELECT COUNT(*) FROM usage_records;"
# 导出为 CSV
sqlite3 llm_gateway.db << EOF
.mode csv
.output api_keys.csv
SELECT * FROM api_keys;
.quit
EOF# 备份(最简单)
cp llm_gateway.db llm_gateway_backup.db
# 恢复
cp llm_gateway_backup.db llm_gateway.db
# SQL 格式备份
sqlite3 llm_gateway.db .dump > backup.sql
# SQL 格式恢复
sqlite3 new_database.db < backup.sql对于你的项目:
- 开发阶段:使用 SQLite(当前配置)✅
- 生产部署:考虑切换到 MySQL/PostgreSQL
SQLite 让你无需安装和配置数据库服务器就能开始开发,非常适合学习和原型开发!