FastAPI + SQLAlchemy2.0 异步数据库 FastAPI 集成 SQLAlchemy2.0 异步数据库主流 Python ORM 对比Python 生态有很多 ORM 库SQLAlchemy、Peewee、Pony ORM、Tortoise‑ORM。SQLAlchemy生态最成熟支持异步社区活跃SQLModelFastAPI 作者开发底层封装 SQLAlchemy Core目前还不够成熟ORM 性能测试参考https://github.com/tortoise/orm‑benchmarks/tree/master/master一、安装异步 SQLAlchemypip install sqlalchemy[asyncio]2.0.31二、创建数据库连接1. 连接字符串格式mysqlasyncmy://用户名:密码主机:端口/数据库名?charsetutf8mb4示例DB_URI mysqlasyncmy://root:root127.0.0.1:3306/book_db?charsetutf8mb42. 创建异步 EngineEngine 负责管理连接池、SQL 翻译全局只实例化一个对象。from sqlalchemy.ext.asyncio import create_async_engine engine create_async_engine( mysqlasyncmy://root:root127.0.0.1:3306/sqlalchemy_learn?charsetutf8mb4, echoTrue, # 打印执行SQL日志生产环境关闭 pool_size10, # 连接池常驻连接数量默认5 max_overflow20, # 连接池最大允许额外创建连接数默认10 pool_timeout10, # 获取连接超时时间单位秒 pool_recycle3600, # 连接回收时间避免MySQL断开空闲连接 pool_pre_pingTrue # 获取连接前探测连接是否有效 )参数说明echoTrue开发调试打印全部 SQL线上务必关闭。pool_pre_pingTrue自动检测断开的数据库连接避免报连接失效错误。3. 创建异步会话工厂 Session使用sessionmaker生成会话工厂后续每次数据库操作都从工厂拿AsyncSession会话对象。from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.asyncio import AsyncSession AsyncSessionFactory sessionmaker( bindengine, class_AsyncSession, # 使用异步Session autoflushTrue, expire_on_commitFalse )expire_on_commitFalsecommit 之后对象属性不会过期FastAPI 开发常用配置。接下来就可以基于会话工厂去定义 ORM 模型实现数据库 CRUD。小结FastAPI 异步 MySQL驱动使用asyncmy安装sqlalchemy[asyncio]。create_async_engine创建全局唯一异步引擎配置连接池参数优化性能。sessionmaker指定class_AsyncSession得到异步会话工厂后续操作数据库都使用会话。

相关新闻

最新新闻

TM4C入门到实战:基于Cortex-M4F的嵌入式开发与底层原理

TM4C入门到实战:基于Cortex-M4F的嵌入式开发与底层原理

做嵌入式这些年,我上手过不少厂商的微控制器。如果让我给刚入行的朋友推荐一款既能用来打基础、又能真正干活的芯片,TI(Texas Instruments)的TM4C系列绝对排得上前三。这颗基于ARM Cortex-M4F内核的微控制器,在高校单片…

2026/8/26 20:51:51
leetcode 3718. 缺失的最小倍数 简单

leetcode 3718. 缺失的最小倍数 简单

给你一个整数数组 nums 和一个整数 k,请返回从 nums 中缺失的、最小的正整数 k 的倍数。倍数 指能被 k 整除的任意正整数。示例 1:输入: nums [8,2,3,4,6], k 2输出: 10解释:当 k 2 时,其倍数为 2、4、6…

2026/8/26 20:51:51
C++ set容器自定义排序:从仿函数到Lambda的实战指南

C++ set容器自定义排序:从仿函数到Lambda的实战指南

1. 项目概述:为什么需要关注set容器的排序? 在C的日常开发中, std::set 是一个我们再熟悉不过的关联容器,它以红黑树为底层数据结构,自动维护元素的唯一性和有序性。很多初学者,甚至一些有一定经验的开发…

2026/8/26 20:51:51
Node.js项目Windows便携包制作:一键打包AI Agent等应用

Node.js项目Windows便携包制作:一键打包AI Agent等应用

1. 为什么我们需要“解压即用”的 Windows 便携包?在开源社区,尤其是 AI Agent、前端工具链这类 Node.js 项目里,我们经常遇到一个尴尬的局面:你兴致勃勃地 clone 了一个看起来很酷的项目,比如某个 AI Agent 框架&…

2026/8/26 20:51:51
UE4 Actor/Pawn/Character职责区分与选型指南

UE4 Actor/Pawn/Character职责区分与选型指南

1. 从“能动的方块”开始:为什么UE4里要设计这么多看似重复的类? 刚进UE4编辑器,拖一个StaticMeshActor进去——它能放、能转、能缩,像个听话的积木。但很快你就发现:想让它走两步?不行。想用键盘控制它&am…

2026/8/26 20:51:51
从调研到定稿:5类文献综述AI工具实测与全流程搭配攻略

从调研到定稿:5类文献综述AI工具实测与全流程搭配攻略

先说结论:没有万能的AI,只有最适配你场景的工具。 去年帮学妹改文献综述,前前后后试了不下十款工具——从ChatGPT、Claude到国产大模型,从垂直学术平台到文献检索神器,踩坑无数。有的生成速度飞快,结果参考…

2026/8/26 20:46:51