数据库模块说明
本目录包含数据库相关的所有代码。
文件说明
app/models/- 数据库模型定义(9个表)app/db/session.py- 数据库连接和配置app/db/init_db.py- 数据库初始化脚本
安装依赖
pip install -r ../requirements.txt
初始化数据库
首次创建数据库
运行以下命令创建数据库表:
cd backend
python -m app.db.init_db
或者从项目根目录运行:
python -m backend.app.db.init_db
执行后会在项目根目录生成 blogweb.db SQLite 数据库文件。
模型更新后更新数据库
⚠️ 重要提示:create_all() 只会创建不存在的表,不会修改已存在表的结构。
如果 models 有更新(添加字段、修改字段类型等),有两种方式:
方式1:重置数据库(开发环境推荐)
⚠️ 会删除所有数据,适合开发环境:
python -m app.db.init_db --reset
方式2:使用数据库迁移工具(生产环境推荐)
对于生产环境,建议使用 Alembic 进行数据库迁移:
# 安装 Alembic
pip install alembic
# 初始化迁移环境
alembic init alembic
# 生成迁移脚本
alembic revision --autogenerate -m "描述变更"
# 执行迁移
alembic upgrade head
数据库表结构
根据 数据库设计说明.md 创建了以下9个表:
- users - 用户账户信息
- todos - 待办事项列表
- posts - 博客文章
- transactions - 个人记账记录
- media - 书影音收藏条目
- tags - 媒体标签
- media_tags - 媒体与标签的多对多关联表
- chat_messages - 聊天室消息记录
- uploads - 用户上传的文件元数据
使用示例
在 FastAPI 应用中使用数据库:
from app.db.session import get_db
from app.models import User, Todo
from sqlmodel import Session, select
# 在路由中使用
@app.get("/users")
def get_users(session: Session = Depends(get_db)):
statement = select(User)
users = session.exec(statement).all()
return users