FastApi-1-结合sql 增/查demo

目录

FastAPI学习记录

fastapi已经学习有一段时间,今天抽时间简单整理下。

官网介绍:

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。

  • 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)最快的 Python web 框架之一。

  • 高效编码:提高功能开发速度约 200% 至 300%。*

  • 更少 bug:减少约 40% 的人为(开发者)导致错误。* 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。

  • 简单:设计的易于使用和学习,阅读文档的时间更短。 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。

  • 健壮:生产可用级别的代码。还有自动生成的交互式文档。 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI

    (以前被称为Swagger) 和 JSON Schema。

如果还没学过的同学可先了解,如 pydantic、fastapi、sqlalchemy、请求/响应模型等有一定认识。

以下分享本次所学习的资料:

本次学习视频(推荐):https://www.imooc.com/video/22971
fastapi:https://fastapi.tiangolo.com/zh
pydantic 官方文档:https://docs.pydantic.dev
pydantic 支持所有的类型:https://docs.pydantic.dev/usage/types

项目结构

fastapi基本大同小异

如果是多个应用则可以再往上提一层,如 admin 下的,app下的等等

部分接口/代码展示

仅仅刚开始学习,增删查改目前只涉及,增、查,未有删改相信也是会很快上手的。

个人感觉主要是 pydantic schemas 这块要梳理清楚,增删查改该怎样编排,使得在编码时更方便。

全部代码将放在最后!

接口文档打开链接:http://127.0.0.1:8000/docs/ppl/index

python 复制代码
from fastapi import APIRouter, Depends, status
from sqlalchemy.orm import Session
from fastapi.responses import JSONResponse
from models.database import Base, engine, get_db
from schemas import schema_user
from cruds import crud_user

api_user = APIRouter()
Base.metadata.create_all(bind=engine)


@api_user.post('/add', response_model=schema_user.GetUser)
def add_user(user: schema_user.CreateUser, work: schema_user.CreateWork, db: Session = Depends(get_db)):
    if crud_user.get_user(db, phone=user.phone):
        return JSONResponse(status_code=status.HTTP_400_BAD_REQUEST, content={
            'code': 0,
            'message': '该手机号已被注册'
        })
    return crud_user.add_user(db, user, work)


@api_user.get('/get', response_model=schema_user.GetUser)
def get_user(id: int = None, phone: int = None, db: Session = Depends(get_db)):
    user = crud_user.get_user(db, id, phone)
    if not user: return JSONResponse(status_code=status.HTTP_200_OK, content={})
    return user


@api_user.get('/list', response_model=list[schema_user.GetUser])
def list_user(skip: int = 1, limit: int = 10, db: Session = Depends(get_db)):
    user_list = crud_user.get_user(db, skip=skip, limit=limit)
    if not user_list: return JSONResponse(status_code=status.HTTP_200_OK, content=[])
    return user_list

感受

值得学习,pydantic 真不错,但是类似编排是比较麻烦了点,可能是本人代码量还不够、不熟练等因素,不过也准备能开始无脑增删查改!!!还需要学习jwt鉴权、中间件、redis,异步后台任务、日志记录等等。

docs接口文档真不赖,生成可视化文档、标注等,直接能调试...方便!

全部代码

右键点我(gitee)

相关推荐
m0_7482338831 分钟前
SQL语句整理五-StarRocks
数据库·sql
州周41 分钟前
Ftp目录整个下载
linux·服务器·数据库
码农君莫笑1 小时前
使用blazor开发信息管理系统的应用场景
数据库·信息可视化·c#·.net·visual studio
NiNg_1_2341 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
Azoner1 小时前
postgresql安装部署(linux)
数据库·postgresql
PyAIGCMaster2 小时前
文本模式下成功。ubuntu P104成功。
服务器·数据库·ubuntu
drebander2 小时前
MySQL 查询优化案例分享
数据库·mysql
初晴~2 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
盖世英雄酱581362 小时前
InnoDB 的页分裂和页合并
数据库·后端
YashanDB4 小时前
【YashanDB知识库】XMLAGG方法的兼容
数据库·yashandb·崖山数据库