项目搭建
在进项开发之前,先将后端项目文件创建出来,进行相关信息配置
3-1 创建项目
创建heima_backend项目,指定FastAPI框架,指定venv虚拟环境

按照指定目录结构创建对应文件夹
| toutiao_backend/ # 项目根目录
├── cache/ # 缓存相关文件
│
├── crud/ # 数据访问层(CRUD操作)
│
├── models/ # 数据模型定义
│
├── routers/ # API路由定义
│
├── schemas/ # 数据验证模型(Pydantic模型)
│
├── utils/ # 工具函数目录(当前为空)
│
├── db_conf.py # 数据库配置文件
├── main.py # 应用入口文件
└── test_main.http # HTTP接口测试文件
|

3-2 数据配置
创建项目数据库
找到database.sql文件,执行SQL脚本


查看执行结果

配置SQLAlchemy
安装模块
| pip install sqlalchemy aiomysql
|

创建db_conf.py文件,指定如下代码:
| from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.ext.asyncio import async_sessionmaker
# 数据库UR
ASYNC_DATABASE_URL = "mysql+aiomysql://root:root@localhost:3306/news_app"
# 创建异步引擎
async_engine = create_async_engine(
ASYNC_DATABASE_URL,
echo=True, # 可选:输出SQL日志
pool_size=10, # 设置连接池中保持的持久连接数
max_overflow=20 # 设置连接池允许创建的额外连接数
)
# 创建异步会话工厂
AsyncSessionLocal = async_sessionmaker(
bind=async_engine,
class_=AsyncSession,
expire_on_commit=False
)
# 依赖项,用于获取数据库会话
async def get_db():
async with AsyncSessionLocal() as session:
try:
yield session
await session.commit()
except Exception:
await session.rollback()
raise
finally:
await session.close()
|

3-3 其他依赖包安装
| pip install fastapi passlib python-jose cryptography redis
pip install bcrypt==4.0.1
|