0

0

Python微服务项目实战教程_FastAPI与数据库整合实例

冷炫風刃

冷炫風刃

发布时间:2026-01-04 21:06:08

|

688人浏览过

|

来源于php中文网

原创

用FastAPI搭建用户管理微服务需四步:定义对齐的ORM模型与Pydantic Schema;用Depends注入数据库会话;实现带查重、加密、刷新的健壮CRUD路由;启动时通过startup事件或Alembic初始化数据库表。

python微服务项目实战教程_fastapi与数据库整合实例

用 FastAPI 搭建微服务,关键不是堆功能,而是把接口、数据、校验、错误处理这几块稳稳地串起来。下面以一个“用户管理微服务”为例,手把手整合数据库(PostgreSQL + SQLAlchemy ORM),不绕弯、不炫技,只讲实际开发中必须踩准的点。

定义清晰的数据模型与 Pydantic Schema

别一上来就写 API,先理清“用户”在数据库里长什么样、对外暴露哪些字段、哪些必填、哪些可选。FastAPI 靠 Pydantic 做自动校验和文档生成,这一步定调后续所有交互。

  • SQLAlchemy Base 定义 ORM 模型(含主键、索引、默认值)
  • Pydantic BaseModel 定义请求体(UserCreate)、响应体(UserOut)、更新体(UserUpdate),字段类型与数据库对齐,但可按需裁剪(比如密码不返回)
  • 注意:数据库模型用 id: int,响应模型用 id: int | None = None —— 因为新建时 ID 是数据库自增,响应才带值

用依赖注入管理数据库会话

FastAPI 的 Depends 不是装饰器噱头,是解耦核心。数据库连接不能在每个路由里手动 create_engine,而应封装成可复用、可测试、带生命周期管理的依赖。

  • 写一个 get_db() 依赖函数,内部用 SessionLocal() 获取会话,用 try/finally 确保 session.close()
  • 在路由函数参数中声明 db: Session = Depends(get_db),FastAPI 自动注入并回收
  • 开发时加 echo=True 查 SQL;上线关掉,避免日志爆炸

CRUD 路由要兼顾简洁与健壮

微服务接口不是越短越好,而是错误能明确报、业务逻辑不裸奔、边界条件有兜底。例如创建用户:

OmniAudio
OmniAudio

OmniAudio 是一款通过 AI 支持将网页、Word 文档、Gmail 内容、文本片段、视频音频文件都转换为音频播客,并生成可在常见 Podcast ap

下载

立即学习Python免费学习笔记(深入)”;

  • 接收 UserCreate,用 db.query(User).filter(User.email == user_in.email).first() 查重,别靠数据库唯一约束硬扛——前端需要友好提示
  • 密码用 pwdlib.hash() 加密后再存,绝不存明文
  • 成功后用 db.refresh(user) 刷新对象,确保 ID、created_at 等数据库生成字段同步到响应中
  • 删除接口别直接 db.delete(),先 get 再删,查不到就抛 HTTPException(status_code=404)

启动服务前务必初始化数据库表

SQLAlchemy 不会自动建表(除非你用 Base.metadata.create_all() 主动触发)。微服务启动时若表不存在,第一次查询就崩。

  • 写一个 init_db(db: Session) 函数,在 FastAPI 的 startup 事件中调用
  • 或更稳妥:用 alembic 做迁移管理,alembic revision --autogenerate -m "init" + alembic upgrade head
  • 本地开发可用 drop_all() + create_all() 快速重置,但禁止在生产环境用

跑通这四步,你就有了一个可运行、可调试、可扩展的 FastAPI 微服务骨架。后续加 JWT 认证、Redis 缓存、异步任务,都是在这个结构上自然叠加,而不是推倒重来。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

746

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

634

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

758

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1260

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

705

2023.08.11

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

97

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 3万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号