从零搭建Python AI项目实战——FastAPI+SQLAIchemy+MySQL+Redis全流程详解,建议收藏!!

发布时间:2026/8/27 17:34:52
从零搭建Python AI项目实战——FastAPI+SQLAIchemy+MySQL+Redis全流程详解,建议收藏!! 项目介绍本项目核心包含认证与会话两大模块各模块功能与技术实现如下认证模块提供完整的用户身份管理能力涵盖注册、登录、退出及个人信息查询功能。在权限控制方面采用统一身份管理架构通过用户表与权限表实现精细化权限分配登录机制结合 Redis 实现单点登录确保用户身份的安全性与唯一性。会话模块聚焦会话全生命周期管理与 AI 交互能力具体包括创建新聊天会话、获取当前用户的所有会话列表、删除指定会话、查询会话历史消息以及基于豆包 AI 模型的长对话功能 —— 通过维护会话上下文实现与 AI 的连贯交互体验。代码结构Swagger UI的接口文档简单问答FastAPISQLAIchemyPython操作Redis各个模块功能代码介绍FastAPI1.1 FastAPI介绍FastAPI 是一个基于 Python 的现代、高性能 Web 框架它的设计目标是快速开发 API同时兼顾高性能、易用性和自动生成交互文档的能力。FastAPI 基于 Python 类型提示Type Hints实现请求数据验证和响应模型定义底层依赖 Starlette异步 Web 框架和 Pydantic数据验证库支持同步和异步代码且完全兼容 OpenAPIAPI 规范和 JSON Schema。FastAPI在构建 RESTful API、微服务等场景中表现尤为突出。相比 Flask同步、需大量扩展、Django全栈冗余、Tornado异步但功能简陋FastAPI 更适合现代 API 开发尤其是需要高并发、清晰文档和严格数据验证的场景。1.2 FastAPI快速构建项目步骤1使用pycharm项目创建一个新项目。步骤2在项目的终端处更新pip版本。python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/步骤3安装项目依赖。# 安装FastAPI和ASGI服务器Uvicornpip install fastapi uvicorn -i https://mirrors.aliyun.com/pypi/simple/步骤4使用app注解中定义一个接口。步骤5启动项目方式1通过命令启动uvicorn main:app --reload方式2通过入口方法启动运行结果1.3 Swagger UI文档Swagger UI 是一个 交互式 API 文档工具它能自动生成可视化的 API 接口文档并支持在线调试接口是前后端开发协作中非常实用的工具。FastAPI 默认集成了 Swagger UI启动项目后通过以下地址访问Swagger UI 文档交互式支持在线调试http://ip:port/docs这是一个可视化的交互式文档你可以在这里直接测试所有 API 接口填写参数并发送请求查看响应结果。ReDoc 文档更注重文档展示http://ip:port/redoc02SQLAIchemy2.1 SQLAIchemySQLAlchemy 是 Python 中功能最全面的 ORM 工具允许你使用 Python 对象来操作数据库而不必编写复杂的 SQL 语句类似Java开发MybatisPlus。2.2 安装依赖pip install fastapi uvicorn sqlalchemy pymysql python-dotenv pydantic-settings -i https://mirrors.aliyun.com/pypi/simple/2.3 查询操作API查询所有.all ()查询第一条.first ()带条件过滤支持 、、 等.filter ()简化条件仅支持 .filter_by ()逻辑与and_()逻辑或or_()降序.desc ()升序.asc ()分页跳过前 n 条 取 m 条.offset (n).limit (m)计数统计符合条件的数量.count ()聚合函数平均值func.avg ()总和func.sum ()2.4 新增操作API单个新增创建对象 添加到会话 提交 刷新.add () .commit () .refresh ()。批量新增批量添加对象.add_all ()。2.5 更新操作API方式 1: 根据索引查询后更新可以避免间隙锁查询对象 修改属性 提交直接赋值。方式 2: 直接更新不查询对象。条件过滤 批量更新.update ({字段新值})。2.6 间隙锁介绍间隙锁的触发条件间隙锁Gap Lock的主要作用是防止幻读通常在以下情况触发使用 REPEATABLE READ 或更高隔离级别MySQL 默认隔离级别为 REPEATABLE READ。执行范围查询或非唯一索引 / 主键的等值查询时InnoDB 会对查询结果之外的 “间隙” 加锁。避免间隙锁的步骤步骤① 是根据主键查询单条记录主键是唯一索引InnoDB 会直接定位到具体行不会锁定间隙。步骤② 最终执行的 SQL 类似 UPDATE user SET username ‘newname’ WHERE id 1由于 WHERE 条件是主键等值匹配InnoDB 只会对该主键对应的行加行锁不会锁定周围的间隙。2.7 删除操作API方式 1: 查询后删除查询对象 删除 提交.delete ()。方式 2: 直接删除不查询对象条件过滤 批量删除.delete ()。2.8 简单的增删改查SQL文件项目结构及.env文件config文件user_dao.py文件main.py文件运行结果03Python操作Redis3.1 Redis介绍Redis 是一款高性能的内存键值数据库支持字符串、哈希、列表等多种数据结构读写速度极快常用于缓存、会话存储、实时数据处理等场景。安装依赖pip install redis3.2 Redis配置类3.3 String类型的API封装3.4 API方法的调用set方法的调用delete方法的调用get方法的调用04项目介绍4.1 项目结构和功能介绍本项目核心包含认证与会话两大模块各模块功能与技术实现如下认证模块提供完整的用户身份管理能力涵盖注册、登录、退出及个人信息查询功能。在权限控制方面采用统一身份管理架构通过用户表与权限表实现精细化权限分配登录机制结合 Redis 实现单点登录确保用户身份的安全性与唯一性。会话模块聚焦会话全生命周期管理与 AI 交互能力具体包括创建新聊天会话、获取当前用户的所有会话列表、删除指定会话、查询会话历史消息以及基于豆包 AI 模型的长对话功能 —— 通过维护会话上下文实现与 AI 的连贯交互体验。代码结构Swagger UI的接口文档4.2 注册功能的实现数据库会话配置用户表结构数据模型Pydantic模型数据验证与序列化定义router路由接口认证服务类4.3 单点登录介绍和流程介绍单点登录Single Sign-On, SSO介绍单点登录Single Sign-On, SSO是一种身份认证策略它允许用户在使用多个相互信任的应用系统时只需进行一次登录操作即可访问所有系统。这一解决方案极大地提升了用户体验减少了重复登录的繁琐过程同时也在一定程度上增强了系统的安全性。以用户访问本系统为例单点登录的完整流程如下未登录状态引导用户首次访问本系统时若未登录系统会自动重定向至统一认证中心提示用户进行身份验证。认证中心验证与凭证生成用户在认证中心输入账号密码验证通过后系统会生成一个包含用户身份信息的JWTJSON Web Token 作为临时认证凭证并返回给用户端通常存储在浏览器中。携带凭证访问应用用户后续访问本系统时浏览器会自动在请求头中携带 JWT 令牌作为身份标识。凭证校验本系统收到请求后会将 JWT 令牌发送至认证中心进行合法性校验包括令牌有效性、用户权限等。无缝授权访问若令牌校验通过认证中心返回 “通过” 结果用户无需再次登录即可直接访问本系统资源实现 “一次登录全域通行” 的单点登录效果。4.4 JWT功能介绍JWT介绍JWTJSON Web Token是一种基于 JSON 的轻量级身份认证令牌用于在客户端与服务器之间安全传递声明信息。它通过数字签名保证信息的完整性和真实性广泛应用于前后端分离、分布式系统中的身份验证场景尤其适合与 FastAPI 等现代 Web 框架结合实现无状态认证。JWT核心作用身份凭证用户登录后服务器生成 JWT 令牌返回给客户端客户端后续请求携带令牌证明身份无需频繁查询数据库验证用户。信息传递令牌中可包含用户 ID、权限等非敏感声明信息减少服务器数据库查询次数提升性能。无状态验证服务器通过验证令牌签名即可确认合法性无需在服务器存储会话状态便于水平扩展。JWT结构结构由header.payload.signature三部分组成用.分隔。Header指定签名算法如 HS256和令牌类型。Payload包含标准声明如过期时间exp、用户 IDsub和自定义信息如用户名仅编码不加密。Signature用密钥对前两部分签名防止篡改。JWT工作流程用户登录后服务器生成 JWT 返回给客户端。客户端后续请求通过Authorization: Bearer 携带令牌。服务器验证签名和过期时间从 Payload 提取用户信息完成认证。优缺点优点无状态易扩展、自包含减少数据库查询、支持跨域。缺点过期前无法撤销可结合 Redis 黑名单解决Payload 不加密。4.5 登录功能的实现router接口在 FastAPI 中OAuth2PasswordRequestForm是一个预定义的依赖项专门用于处理OAuth2 密码模式Password Flow 的登录请求。它简化了用户登录时的表单数据解析与验证是实现基于用户名 / 密码认证的常用工具。服务类的方法config.py的JWT配置功能security.py认证功能代码4.7 Auth2密码Bearer模式token的解码dependencies.py调用4.6 豆包AI_Key的申请火山引擎网址https://console.volcengine.com/打开网址后注册登录登录成功后来到模型广场这里选择自己项目要引入的模型每个模型都有50万的免费token使用。选择自己要引入的模型点击API接入创建API Key创建API Key后将申请到的API Key配置到项目中4.7 调用豆包AI大模型message表结构chat_sessions表结构chat_messages表结构数据模型Pydantic模型数据验证与序列化router入口方法服务类方法调试结果4.8 日志记录功能日志记录中间件middlewares.py日志记录logging.pymain.pyAPI路由其他代码的阅读可根据下方提示下载查看。项目运行项目运行需要配置好Python运行环境我的python版本是3.11.1我在项目中已经使用下面命令生成了项目的依赖配置pip freeze requirements.txt可以通过下面的命令安装项目的依赖pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/如果你的pip版本比较旧安装报错可以通过下面命令更新pip版本后重新安装python.exe pip -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/项目运行最后为什么要学AI大模型当下⼈⼯智能市场迎来了爆发期并逐渐进⼊以⼈⼯通⽤智能AGI为主导的新时代。企业纷纷官宣“ AI ”战略为新兴技术⼈才创造丰富的就业机会⼈才缺⼝将达 400 万DeepSeek问世以来生成式AI和大模型技术爆发式增长让很多岗位重新成了炙手可热的新星岗位薪资远超很多后端岗位在程序员中稳居前列。与此同时AI与各行各业深度融合飞速发展成为炙手可热的新风口企业非常需要了解AI、懂AI、会用AI的员工纷纷开出高薪招聘AI大模型相关岗位。最近很多程序员朋友都已经学习或者准备学习 AI 大模型后台也经常会有小伙伴咨询学习路线和学习资料我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频全系列的学习资料这些学习资料不仅深入浅出而且非常实用让大家系统而高效地掌握AI大模型的各个知识点。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】AI大模型系统学习路线在面对AI大模型开发领域的复杂与深入精准学习显得尤为重要。一份系统的技术路线图不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点还能提供一条高效、有序的学习路径。但知道是一回事做又是另一回事初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性在这基础上找到高质量的学习资源不浪费时间、不走弯路又是重中之重。AI大模型入门到实战的视频教程项目包看视频学习是一种高效、直观、灵活且富有吸引力的学习方式可以更直观地展示过程能有效提升学习兴趣和理解力是现在获取知识的重要途径光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。海量AI大模型必读的经典书籍PDF阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。600AI大模型报告实时更新这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。AI大模型面试真题答案解析我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】