Python的Web框架“FastApi“常用的ORM框架

发布时间:2026/10/23 4:51:59

Python的Web框架“FastApi“常用的ORM框架 安装第三方库sqlalchemy让你用 Python 类和对象来操作数据库表和数据把 SQL 语句翻译成 Python 代码。加[asyncio]确保greenlet被安装让你能用create_async_engineaiomysql负责真正的数据库网络通信是异步引擎的底层驱动pip install sqlalchemy[asyncio] aiomysqlfrom fastapi import FastAPI,Path,Query,HTTPException,Depends from sqlalchemy.ext.asyncio import create_async_engine,async_sessionmaker,AsyncSession from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, MappedColumn from sqlalchemy import func,DateTime,String,Float,select # 数据库URL root 用户名 admin数据库密码 python_ceshi数据库名 ASYNC_DATABASE_URL mysqlaiomysql://root:adminlocalhost:3306/python_ceshi?charsetutf8 # 创建异步引擎 async_engine create_async_engine( ASYNC_DATABASE_URL, echoTrue, pool_size10, max_overflow10, ) # 创建异步会话工厂 AsyncSessionLocal async_sessionmaker( bind async_engine, class_ AsyncSession, expire_on_commit False, ) # 创建基类,所有的模型都要继承基类,为所有的模型设置创建时间和修改时间字段 class Base(DeclarativeBase): create_time: Mapped[datetime] mapped_column(DateTime,insert_defaultfunc.now(),defaultfunc.now(),comment创建时间) update_time: Mapped[datetime] mapped_column(DateTime,insert_defaultfunc.now(),onupdatefunc.now(),comment修改时间) # 定义模型类继承 Base class User(Base): # ← 继承 Base __tablename__ users # ← 指定表名 # 写n个字段名查询的时候才能查到n个 id Column(Integer, primary_keyTrue) name Column(String(50)) age Column(Integer) #创建表方法 async def create_table(): async with async_engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) # 依赖项 用户获取数据库会话 async def get_db(): async with AsyncSessionLocal() as session: try: yield session await session.commit() except Exception as e: await session.rollback() raise e finally: await session.close() #启动阶段运行 uvicorn main:app --reload 命令时FastAPI 会立刻调用这个函数。 asynccontextmanager async def lifespan_context(app: FastAPI): # 进入时执行启动阶段 await create_table() yield # 必须标记进入阶段结束运行阶段开始 # 退出时执行关闭阶段 app FastAPI(lifespanlifespan_context) app.get(/) # Depends(get_db) 是 FastAPI 的依赖注入系统 #它的作用是在每个请求中自动获取一个数据库会话AsyncSession并把它注入到你的路由函数里。 async def index(db: AsyncSession Depends(get_db)): # 获取全部的用户信息 return (await db.scalars(select(User))).all()
延伸阅读

更多相关文章

2026/10/23 4:50:00

鲜花网站课程设计全攻略:从需求拆解到答辩避坑

简介:这是一份基于HTML5、CSS3与JavaScript的鲜花网站课程设计项目,主要面向计算机相关专业学生及前端入门开发者,用于完成网页设计类课程作业或积累仿真实战经验。项目不仅使用语义化标签搭建页面框架,借助Flex/Grid实现响应式布…

2026/10/22 23:50:34

论文双降我试了毕业之家,顺带把全流程工具捋了一遍

写得不错,信息搜集得比较全面了。现在我来写这篇分享帖。 我需要写一篇帮助论文季人群选择辅助工具的分享帖,结合: 毕业之家(AI一键双降,DeepSeek R1满血模型学术语言模型,降重复率AIGC率,保可读…

2026/10/20 20:32:02

资源站源码选型与部署实战:PHP建站、SEO优化到长期运营

简介:这是一套基于ASP的完整免费资源站源码,面向网站开发初学者、快速建站用户及二次开发者,可帮助快速搭建并理解完整站点。压缩包内包含完整的前端页面、服务端脚本、数据库配置及样式交互文件,共包含1119个相关文件&#xff0c…

2026/10/23 4:48:57

基于 Java Spring Boot 的车队管理系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/23 4:48:57

JANUS:针对 LEO 卫星网络中波束跳变的拒绝服务攻击

大家读完觉得有帮助记得关注和点赞!!!摘要 低地球轨道(LEO)卫星网络正越来越多地用于提供全球连接。然而,每颗卫星的资源有限,需要根据地理和时间上变化的需求进行分配。波束跳变通过将卫星的服…

2026/10/23 4:48:56

SpringBoot+Vue的古诗词学习微信小程序设计实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/23 4:43:55

Rufus 完整指南:4 步做出绕过 TPM 2.0 的 Windows 11 启动盘

Rufus 完整指南:4 步做出绕过 TPM 2.0 的 Windows 11 启动盘 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus Rufus 是一款单文件的 Windows U 盘格式化工具,免费、不用安装…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/23 0:02:26

Verilog实现FPGA密码锁:矩阵键盘与状态机设计实战

说实话,这几年接触了不少想入门FPGA的朋友,如果你问哪个项目能一口气把Verilog的核心基本功串起来,我通常会推荐电子密码锁。这个项目看着不起眼,却把矩阵键盘扫描、按键消抖、状态机设计、动态显示刷新、外设控制这些数字逻辑里的…

2026/10/23 0:02:26

数据服务监控运维实战:从指标体系到告警治理与故障排查

周末凌晨两点,手机震了。第一反应是“数据服务挂了”。打开电脑看了下,果然,某张核心报表的数据产出时间已经超过SLA两小时,下游三个业务方连着发来问询。这种场景,做过大数据运维的人都不会陌生。数据服务的监控与运维…

2026/10/23 0:02:26

FreeRTOS任务通知实战详解:内核原理、API与避坑指南

裸机编程切到RTOS之后,任务之间的通信和同步永远是躲不开的坎。前面聊过队列、信号量、互斥锁、事件组,这次把FreeRTOS任务通知(Task Notification)单独拎出来讲透。原因很简单:任务通知是FreeRTOS里最容易用错、也最容…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑