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 路由要兼顾简洁与健壮

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

PodLM
PodLM

PodLM是一款强大的AI播客生成工具

下载

立即学习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相关课程以及相关文章等内容,供大家免费下载使用。

738

2023.06.15

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

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

634

2023.07.20

python能做什么
python能做什么

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

755

2023.07.25

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

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

617

2023.07.31

python教程
python教程

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

1259

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

Golang 分布式缓存与高可用架构
Golang 分布式缓存与高可用架构

本专题系统讲解 Golang 在分布式缓存与高可用系统中的应用,涵盖缓存设计原理、Redis/Etcd集成、数据一致性与过期策略、分布式锁、缓存穿透/雪崩/击穿解决方案,以及高可用架构设计。通过实战案例,帮助开发者掌握 如何使用 Go 构建稳定、高性能的分布式缓存系统,提升大型系统的响应速度与可靠性。

59

2026.01.09

热门下载

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

精品课程

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

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 2.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.1万人学习

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

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