
「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 9 篇。 结论:SQLAlchemy 的 CRUD 都围绕 Session:add + commit 新增,改属性 + commit 更新,delete + commit 删除,query/get 查询。关联关系用 relationship 配置。 一、新增 from datetime import date def insert_da…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 8 篇。 结论:SQLAlchemy 用三层完成数据库操作:Engine 管连接,Base 管表结构,Session 管一次会话里的增删改查。 一、ORM 是什么 ORM 把表映射成类、把行映射成对象:Department 类对应 departments 表,一个 Department 对象对应一行记录。好处是屏蔽数据库差异、少写 SQ…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 7 篇。 结论:POST/PUT 的 JSON 数据用 Pydantic 模型接收;项目变大后,用 APIRouter 按模块拆路由,主应用只负责挂载。 一、请求体:用 BaseModel 定义结构 from fastapi import FastAPI from pydantic import BaseModel class Item…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 6 篇。 结论:路径里的 {name} 是路径参数,其余函数参数默认是查询参数;类型注解决定转换和校验,类型不对 FastAPI 自动返回 422。 一、路径参数:自动转换类型 @app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 5 篇。 结论:FastAPI 的最小程序只有三部分:FastAPI() 实例、路径装饰器、处理函数。启动后访问 /docs 就能看到自动生成的接口文档。 一、安装与最小程序 pip install fastapi uvicorn from fastapi import FastAPI app = FastAPI() @app.get(…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 4 篇。 结论:WSGI 是同步接口规范,ASGI 是它的异步版本。FastAPI 基于 ASGI,生产环境用 Uvicorn 运行;同步函数会被放进线程池,异步函数直接在事件循环里跑。 一、WSGI:一次请求占一个线程 WSGI 应用是一个同步可调用对象: def application(environ, start_response…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 3 篇。 结论:create_task 负责启动并发,gather 负责等待结果,wait_for 负责超时,cancel 负责取消。四个工具解决协程的四种控制需求。 一、create_task:把协程变成任务 import asyncio async def my_func(name, delay): await asyncio.sl…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 2 篇。 结论:async def 定义协程函数,调用它只返回协程对象;await 让出控制权,事件循环负责在 I/O 完成后恢复执行。 一、async def 不是“立即执行” import asyncio async def hello(): print("Hello") await asyncio.sleep(1) print("…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 1 篇。 结论:I/O 密集型任务优先用协程,CPU 密集型任务用多进程,线程只适合少量阻塞调用或必须使用同步库的场景。 一、三者怎么选 进程线程协程 调度者操作系统操作系统程序自己(事件循环) 内存独立地址空间共享进程内存共享线程内存 切换成本高中极低 并发量几十个几百到几千几万 适合CPU 密集少量阻塞 I/O高并发 I/O 二、线…
最新评论
干货满满!
江苏省 南京市 · IP 49.91.145.*
我要看文章
重庆市 · IP 116.168.9.*
这个内容实在是太精彩啦
重庆市 · IP 123.147.232.*