FastAPI项目实战
FastAPI + SQLAlchemy 项目实战:RBAC用户权限管理系统学习笔记前言RBAC(Role-Based Access Control,基于角色的访问控制)是目前企业级系统最通用的权限管理模型,核心思路是用户关联角色、角色关联权限,通过角色实现用户和权限的解耦,极大提升权限管理的灵活性和可维护性。 本笔记将完整记录一套轻量化企业级 RBAC 用户权限管理系统的开发全过程,涵盖需求分析、项目设计、数据库设计、代码实现、异常处理、接口测试等全流程,所有代码可直接复制运行,适合零基础入门 FastAPI 项目实战,同时掌握后台权限系统的核心开发逻辑。 技术栈:FastAPI + SQLAlchemy + Pydantic + JWT + Python3.10+ + SQLite(可无缝切换 MySQL/PostgreSQL) 一、项目需求分析1.1 功能需求本项目实现一套基础通用的后台权限管理系统,核心功能覆盖用户、角色、权限全链路管理,具体需求如下: 用户模块:用户注册、账号密码登录、用户新增/查询/修改/删除(CRUD)、用户...
FastAPI+SQLAlchemy项目实战
FastAPI + SQLAlchemy 项目实战(用户权限管理系统)一、项目介绍本篇笔记将使用: FastAPI SQLAlchemy 2.x MySQL JWT Pydantic Alembic 实现一个完整的: 用户权限管理系统(RBAC)功能包含: 用户注册 用户登录 JWT 鉴权 用户 CRUD 角色管理 菜单管理 用户角色绑定 分页查询 全局异常处理 统一响应结构 Swagger 接口测试 项目采用: Router Service Schema ORM Model 分层架构。 二、项目结构设计推荐采用企业级目录结构: 12345678910111213141516171819202122232425262728293031323334353637fastapi_rbac/│├── app/│ ├── main.py│ ││ ├── core/│ │ ├── config.py│ │ ├── database.py│ │ ├── security.py│ │ ├── response.py│ │ └── ...
SQLAlchemy2.0全面实战
FastAPI学习笔记(三):SQLAlchemy 2.0 全面实战本篇适用场景与核心定位前面两篇我们搞定了 FastAPI 基础接口开发、异步底层原理、高并发与阻塞问题。但任何后端项目,最终核心都是数据库读写、数据建模、事务一致性、查询性能。 本篇以企业通用后台:用户-角色-权限-部门真实业务场景切入,完整落地 SQLAlchemy 2.0 全套知识点,覆盖同步/异步双引擎、模型设计、会话管理、全套CRUD、高级查询、联表关系、懒加载优化、事务、分页、原生SQL、Alembic迁移、企业级封装。 本篇为 FastAPI 项目数据层终极指南,学完可直接搭建可上线、可迭代、高性能、规范标准的生产级数据库架构,彻底告别手写SQL、模型混乱、事务失控、N+1性能坑等常见问题。 技术栈版本:SQLAlchemy 2.0 + Python3.10+ + aiomysql/asyncmy + Alembic 一、SQLAlchemy 2.0 核心五大组件(必懂基石)SQLAlchemy 2.0 相比1.x版本做了大量语法重构、异步标准化、类型注解增强,是目前Python生...
FastAPI异步编程与高级特性
FastAPI学习笔记(二):异步编程与高级特性本篇核心定位很多开发者使用 FastAPI 开发时会遇到一个致命问题:明明用了 FastAPI,接口依然卡顿、并发极低、多请求互相阻塞,完全没有感受到 FastAPI 的高性能优势。归根结底,是没有吃透 FastAPI 底层异步运行机制,误用同步阻塞代码、混淆异步使用场景、不了解并发模型导致的。 本篇为 FastAPI 进阶核心篇章,专门解决 「为什么你的 FastAPI 会阻塞」 这一生产级核心痛点。全文深度拆解 asyncio 异步底层、同步异步使用规范、阻塞致命坑、并发高阶API、流式响应、WebSocket实时通信、项目性能优化方案,所有知识点配套原理讲解、正反案例、生产适用场景、完整实战代码。 学完本篇,可彻底规避99%的FastAPI并发阻塞BUG,独立开发高并发接口、AI流式接口、实时通信接口,掌握企业级FastAPI性能优化全套方案。 一、asyncio 核心底层原理(异步基石)FastAPI 的高性能完全依托 Python 原生 asyncio 异步库实现,想要彻底解决接口阻塞问题,必须吃透 asyncio 四大核...
FastAPI核心基础
FastAPI学习笔记(一):FastAPI 核心基础一、FastAPI 核心原理1.1 FastAPI 是什么FastAPI 是一款基于 Python 3.8及以上版本、依托原生类型提示语法开发的现代化、高性能、工程化 Web API 开发框架。相较于传统的 Flask、Django 框架,FastAPI 针对性解决了传统 Python 后端框架性能弱、无自动校验、无原生接口文档、工程化薄弱等痛点,是目前 Python 微服务、后台管理系统、移动端接口、第三方对接接口开发的主流首选框架。 FastAPI 的核心设计理念是高效开发、类型安全、高性能、零冗余配置。框架内置了完整的数据校验、接口文档、异常处理、依赖注入能力,无需引入大量第三方插件,开箱即用。同时完美兼容同步、异步两种开发模式,兼顾开发效率与服务并发性能,适配从小型接口项目到中大型分布式微服务项目的全场景开发。 核心特性详细解析: 全自动数据校验:依托 Pydantic 实现运行时参数校验、类型转换、数据清洗,无需手写 if 判断校验参数,大幅减少冗余代码与BUG。 零成本自动接口文档:根据代码路由、参数、模型自动...
朴素贝叶斯与聚类
朴素贝叶斯朴素贝叶斯介绍 复习常见概率的计算 知道贝叶斯公式 了解朴素贝叶斯是什么 了解拉普拉斯平滑系数的作用 【知道】常见的概率公式 条件概率: 表示事件A在另外一个事件B已经发生条件下的发生概率,P(A|B) 在女神喜欢的条件下,职业是程序员的概率? 女神喜欢条件下,有 2、3、4、7 共 4 个样本 4 个样本中,有程序员 3、4 共 2 个样本 则 P(程序员|喜欢) = 2/4 = 0.5 联合概率: 表示多个条件同时成立的概率,P(AB) = P(A) P(B|A)特征条件独立性假设:P(AB) = P(A) P(B) 职业是程序员并且体型匀称的概率? 数据集中,共有 7 个样本 职业是程序员有 1、3、4 共 3 个样本,则其概率为:3/7 在职业是程序员,体型是匀称有 3 共 1 个样本,则其概率为:1/3 则即是程序员又体型匀称的概率为:3/7 * 1/3 = 1/7 联合概率 + 条件概率: 在女神喜欢的条件下,职业是程序员、体...
集成学习
集成学习集成学习简介学习目标: 1.知道集成学习是什么? 2.了解集成学习的分类 3.理解bagging集成的思想 4.理解boosting集成的思想 【知道】集成学习是什么?集成学习是机器学习中的一种思想,它通过多个模型的组合形成一个精度更高的模型,参与组合的模型成为弱学习器(基学习器)。训练时,使用训练集依次训练出这些弱学习器,对未知的样本进行预测时,使用这些弱学习器联合进行预测。 传统机器学习算法 (例如:决策树,逻辑回归等) 的目标都是寻找一个最优分类器尽可能的将训练数据分开。集成学习 (Ensemble Learning) 算法的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话:三个臭皮匠,赛过诸葛亮 集成学习通过建立几个模型来解决单一预测问题。它的工作原理是 生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测。 【了解】集成学习分类集成学习算法一般分为:bagging和boosting。 【理解】bagging集成Baggging ...
决策树
决策树决策树简介学习目标 1.理解决策树算法的基本思想 2.知道构建决策树的步骤 【理解】决策树例子决策树算法是一种监督学习算法,英文是Decision tree。 决策树思想的来源非常朴素,试想每个人的大脑都有类似于if-else这样的逻辑判断,这其中的if表示的是条件,if之后的else就是一种选择或决策。程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。 比如:你母亲要给你介绍男朋友,是这么来对话的: 女儿:多大年纪了? 母亲:26。 女儿:长的帅不帅? 母亲:挺帅的。 女儿:收入高不? 母亲:不算很高,中等情况。 女儿:是公务员不? 母亲:是,在税务局上班呢。 女儿:那好,我去见见。 于是你在脑袋里面就有了下面这张图: 作为女孩的你在决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。 【知道】决策树简介决策树是什么? 决策树是一种树形结构,树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果 决策树的建立过程: 1.特...
逻辑回归
逻辑回归逻辑回归简介学习目标: 1.知道逻辑回归的应用场景 2.复习逻辑回归应用到的数学知识 【了解】应用场景 逻辑回归是解决二分类问题的利器 【熟悉】数学知识【知道】sigmoid函数 【理解】概率 【理解】极大似然估计核心思想: 设模型中含有待估参数w,可以取很多值。已经知道了样本观测值,从w的一切可能值中(选出一个使该观察值出现的概率为最大的值,作为w参数的估计值,这就是极大似然估计。(顾名思义:就是看上去那个是最大可能的意思) 举个例子: 假设有一枚不均匀的硬币,出现正面的概率和反面的概率是不同的。假定出现正面的概率为𝜃, 抛了6次得到如下现象 D = {正面,反面,反面,正面,正面,正面}。每次投掷事件都是相互独立的。 则根据产生的现象D,来估计参数𝜃是多少? 1234P(D|𝜃) = P {正面,反面,反面,正面,正面,正面} = P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃)=𝜃 *(1-𝜃)*(1-𝜃)𝜃*𝜃*𝜃 = 𝜃4(1 − 𝜃) 问题转...
线性回归
线性回归线性回归介绍学习目标: 1.理解线性回归是什么? 2.知道一元线性回归和多元线性回归的区别 3.知道线性回归的应用场景 【理解】举个栗子假若有了身高和体重数据,来了播仔的身高,你能预测播仔体重吗? 这是一个回归问题,该如何求解呢? 思路:先从已知身高X和体重Y中找规律,再预测 •数学问题:用一条线来拟合身高和体重之间的关系,再对新数据进行预测 方程 Y = kX + b k160 + b = 56.3 – (1) k166 + b = 60.6 –- (2) 。。。。 k: 斜率 b:截距 若:y = 0.9 x + (-93) 0.9*176 +(-93)= ? 【理解】线性回归线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 注意事项: 1 为什么叫线性模型?因为求解的w,都是w的零次幂(常数项)所以叫成线性模型 2 在线性回归中,从数据中获取的规律其实就是学习权重系数w 3 某...