#前言
#一、项目初始化
1. pycharm 创建项目 fastapi_admin
2. 安装依赖
3. 进入项目,初始化项目目录
# 控制层
mkdir -p admin/controller
# 服务层
mkdir -p admin/service
# 数据操作层
mkdir -p admin/dao
# 模型
mkdir -p admin/models
# 配置文件,日志,中间件等
mkdir config
mkdir logs
mkdir middlewares
mkdir utils
#二、app初始化
新增server.py
from fastapi import FastAPI
from admin.controller.login import login_router
from admin.controller.role import role_router
from admin.controller.user import user_router
from loguru import logger
from contextlib import asynccontextmanager
from config.database import Base
# 异步上下文管理器管理生命周期事件仅对主应用程序生效
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("app开始启动")
# todo! 注册数据库
logger.info("app启动成功")
yield
# todo! 释放资源
logger.info("app关闭成功")
app = FastAPI(lifespan=lifespan)
router_list = [
{'router': login_router, 'tags': ['登录路由']},
{'router': user_router, 'tags': ['用户路由']},
{'router': role_router, 'tags': ['角色路由']},
]
for router in router_list:
# 使用 app.include_router(),我们可以将每个 APIRouter 添加到主 FastAPI 应用程序中
app.include_router(router=router.get('router'), tags=router.get('tags'))
新增app.py
import uvicorn
from server import app
if __name__ == '__main__':
uvicorn.run(
app='app:app',
host='127.0.0.1',
port=8080,
)
新增admin/controller/login.py
from fastapi import APIRouter
# 分组路由
login_router = APIRouter()
新增admin/controller/role.py
from fastapi import APIRouter
# 分组路由
role_router = APIRouter()
新增admin/controller/user.py
from fastapi import APIRouter
# 分组路由
user_router = APIRouter()
数据库初始化
新增config/database.py,连接配置修改成自己的
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
SQLALCHEMY_DATABASE_URL = "mysql+pymysql://{user}:{password}@{host}/{database}".format(user='root',
password='sicheng43',
host='127.0.0.1',
database='fastapiadmin')
# SQLALCHEMY_DATABASE_URL = "postgresql://user:password@postgresserver/db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False},
echo=True
)
# 每个实例SessionLocal都会是一个数据库会话
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# 通过类继承,来创建每个数据库模型或类(ORM 模型)
Base = declarative_base()
完结
直接运行app.py 文件,可以发现项目已经成功启动了。本章内容都是以项目搭建初始化为主,后面章节会开始编写接口代码