Skip to content

项目搭建

在进项开发之前,先将后端项目文件创建出来,进行相关信息配置

3-1 创建项目

创建heima_backend项目,指定FastAPI框架,指定venv虚拟环境

image-20251018171549277

按照指定目录结构创建对应文件夹

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

image-20251018172358787

3-2 数据配置

创建项目数据库

找到database.sql文件,执行SQL脚本

image-20251018173750903

image-20251018173851411

查看执行结果

image-20251018173938882

配置SQLAlchemy

安装模块

pip install  sqlalchemy aiomysql 

image-20251018180440518

创建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()

image-20251018180553828

3-3 其他依赖包安装

pip install fastapi  passlib  python-jose cryptography redis
pip install bcrypt==4.0.1