Skip to content

Latest commit

 

History

History
231 lines (182 loc) · 5.01 KB

File metadata and controls

231 lines (182 loc) · 5.01 KB

SQLite 快速入门指南(给 MySQL 用户)

核心概念对比

概念 MySQL SQLite
架构 客户端-服务器 嵌入式(无服务器)
数据库 服务器中的逻辑分组 单个 .db 文件
启动 需要启动 mysqld 无需启动任何服务
连接 网络连接(TCP/IP) 直接文件读写
用户管理 有(用户名/密码) 无(文件权限控制)
并发 高并发支持 读多写少场景
适用场景 生产环境、多用户 开发、测试、小型应用

连接字符串对比

MySQL

# 需要:服务器地址、端口、用户名、密码、数据库名
DATABASE_URL = "mysql+aiomysql://root:password@localhost:3306/llm_gateway"

SQLite

# 只需要:文件路径
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
  • 自动创建:如果文件不存在,首次运行时自动创建

切换到 MySQL(生产环境)

只需修改 .env 文件:

# 从 SQLite
DATABASE_URL=sqlite+aiosqlite:///./llm_gateway.db

# 改为 MySQL
DATABASE_URL=mysql+aiomysql://user:password@localhost:3306/llm_gateway

注意:切换到 MySQL 前需要:

  1. 安装 MySQL 服务器
  2. 创建数据库:CREATE DATABASE llm_gateway;
  3. 安装驱动:pip install aiomysql

代码无需修改!SQLAlchemy 会自动适配。

实用 SQLite 命令

进入交互式命令行

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:"
# 数据在内存中,程序关闭后消失

优缺点

SQLite 优点

✅ 零配置,开箱即用
✅ 单文件,易于备份和迁移
✅ 轻量级,无需额外进程
✅ 完美适合开发和测试
✅ 跨平台,文件可直接复制

SQLite 限制

❌ 并发写入性能较低
❌ 不适合高并发场景
❌ 无网络访问(只能本地)
❌ 无用户权限管理
❌ 数据库大小建议 < 1GB

何时使用 SQLite

  • ✅ 开发和测试环境
  • ✅ 小型应用(< 100 并发用户)
  • ✅ 嵌入式应用
  • ✅ 原型开发
  • ✅ 本地工具和脚本

何时切换到 MySQL/PostgreSQL

  • ❌ 生产环境(高并发)
  • ❌ 多服务器部署
  • ❌ 需要复杂权限管理
  • ❌ 数据库 > 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 让你无需安装和配置数据库服务器就能开始开发,非常适合学习和原型开发!