FastAPI中如何高效实现类似Django filter的范围查询?

fastapi中如何高效实现类似django filter的范围查询?

本文介绍如何在FastAPI中高效实现类似Django filter的范围查询功能,以简化数据库查询条件的构建。 Django的django-filter库提供了便捷的范围查询,而FastAPI则需要结合Pydantic模型和SQLAlchemy等ORM框架来实现。

以下是一种基于SQLAlchemy的实现方法:

首先,定义一个Pydantic模型来接收前端的查询参数:

from pydantic import BaseModelfrom typing import Optional, Listfrom datetime import dateclass SeriesFilter(BaseModel):    company: Optional[List[int]] = None    confirm_start: Optional[date] = None    confirm_end: Optional[date] = None    score_min: Optional[int] = None    score_max: Optional[int] = None

接下来,在FastAPI路由函数中,使用接收到的参数构建SQLAlchemy查询:

from fastapi import FastAPI, Dependsfrom sqlalchemy import create_engine, text, funcfrom sqlalchemy.orm import Sessionfrom database import Base, engine, get_db  # 假设数据库连接和模型定义在database.py中from models import Series  # 假设Series是你的数据库模型app = FastAPI()Base.metadata.create_all(bind=engine)@app.get("/series/")async def read_series(filter_params: SeriesFilter = Depends(get_db)): #get_db函数需要返回一个数据库session    with Session(engine) as db:        query = db.query(Series)        if filter_params.company:            query = query.filter(Series.company_id.in_(filter_params.company))        if filter_params.confirm_start:            query = query.filter(Series.confirm_at >= filter_params.confirm_start)        if filter_params.confirm_end:            query = query.filter(Series.confirm_at = filter_params.score_min)        if filter_params.score_max:            query = query.filter(Series.rating_score <= filter_params.score_max)        results = query.all()        return results#示例get_db函数def get_db():    db = SessionLocal()    try:        yield db    finally:        db.close()# 假设的数据库模型(database.py)from sqlalchemy import Column, Integer, String, Datefrom sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class Series(Base):    __tablename__ = "series"    id = Column(Integer, primary_key=True, index=True)    company_id = Column(Integer)    confirm_at = Column(Date)    rating_score = Column(Integer)    # ... other columns

这段代码根据SeriesFilter模型中的参数动态构建SQLAlchemy查询条件。 get_db 函数是一个依赖注入函数,负责创建和管理数据库会话。 请根据你的实际数据库连接信息和模型定义修改database.py和models.py文件。 错误已更正,confirm_at 和 rating_score 的比较操作符已修正。 此方法需要你熟悉SQLAlchemy的使用。 其他ORM框架,例如SQLModel,也可以实现类似的功能。

以上就是FastAPI中如何高效实现类似Django filter的范围查询?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1359384.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何使用 pip 安装 pyproject.toml 中的包?
上一篇 2025年12月13日 22:41:06
在 Python 中使用 with 语句时,如何处理并创建不存在的文件和目录?
下一篇 2025年12月13日 22:41:22

相关推荐

  • Java中InterruptedException与线程中断配合使用

    InterruptedException是Java中用于线程中断的检查异常,当线程在阻塞操作中被中断时抛出;调用interrupt()方法仅设置中断状态,线程需自行响应;常见可中断方法包括sleep、wait、join等;捕获该异常后应恢复中断状态或进行清理并退出;错误地忽略异常会导致中断信号丢失,…

    2026年9月26日
    000
  • Fami通新作评分公布:地雷社新作获31分好评!

    Fami通新作评分公布:地雷社新作获31分好评!Fami通新作评分公布:地雷社新作获31分好评!Fami通新作评分公布:地雷社新作获31分好评!Fami通新作评分公布:地雷社新作获31分好评!

    日本游戏杂志《fami通》公布了第1910期的新作评分,本次共有两款游戏上榜。其中,由地雷社compileheart开发的2d动作rpg《魔法司书阿莉亚娜七英杰之书》斩获31分,获得好评。值得一提的是,本作主角阿莉亚娜的配音由虚拟主播周央珊瑚担任,引发了不少关注。具体评分如下: 《魔法司书阿莉亚娜七…

    2026年9月26日 • 用户投稿
    000
  • Gemini需要GPU支持吗 Gemini对硬件的依赖与运行建议

    Gemini需要GPU支持吗 Gemini对硬件的依赖与运行建议Gemini需要GPU支持吗 Gemini对硬件的依赖与运行建议Gemini需要GPU支持吗 Gemini对硬件的依赖与运行建议Gemini需要GPU支持吗 Gemini对硬件的依赖与运行建议

    很多人在使用或了解大型语言模型Gemini时,都会好奇它是否必须依赖高性能的图形处理器(GPU)才能运行。本文将围绕Gemini对硬件的需求这一核心问题进行探讨,详细说明GPU在其中的作用、模型的其他硬件依赖性以及为获得更好体验而提供的运行建议。通过了解这些信息,您可以更好地评估和准备适合运行或利用…

    2026年9月26日 • 用户投稿
    100
  • x浏览器更新失败是什么问题_x浏览器版本自动更新失败解决方法

    x浏览器更新失败是什么问题_x浏览器版本自动更新失败解决方法x浏览器更新失败是什么问题_x浏览器版本自动更新失败解决方法x浏览器更新失败是什么问题_x浏览器版本自动更新失败解决方法x浏览器更新失败是什么问题_x浏览器版本自动更新失败解决方法

    更新失败可能因网络、存储或权限问题导致。1. 切换稳定Wi-Fi并检查更新;2. 清理存储,确保1GB以上空间;3. 手动下载官方APK并允许未知来源安装;4. 关闭安全类后台程序;5. 清除应用商店缓存与数据,重授予权限后重试。 如果您在尝试更新x浏览器时遇到更新失败的问题,可能是由于网络连接不稳…

    2026年9月26日 • 用户投稿
    000
  • 探究Oracle与Sybase在企业应用中的优势及适用场景

    探究Oracle与Sybase在企业应用中的优势及适用场景探究Oracle与Sybase在企业应用中的优势及适用场景探究Oracle与Sybase在企业应用中的优势及适用场景探究Oracle与Sybase在企业应用中的优势及适用场景

    标题:Oracle与Sybase在企业应用中的优势及适用场景探究 在企业应用领域,数据库管理系统(DBMS)是至关重要的一环,能够为企业提供高效稳定的数据管理和处理服务。Oracle和Sybase作为两个知名的关系型数据库管理系统,在企业应用中备受青睐。本文将从各自的优势和适用场景出发,探究Orac…

    2026年9月26日 • 用户投稿
    000
  • 百家号动态怎么发布_百家号动态发布的方法与注意事项

    百家号动态怎么发布_百家号动态发布的方法与注意事项百家号动态怎么发布_百家号动态发布的方法与注意事项百家号动态怎么发布_百家号动态发布的方法与注意事项百家号动态怎么发布_百家号动态发布的方法与注意事项

    要成功发布百家号动态,需先完成账号注册与实名认证,确保具备发布权限。通过手机APP或网页后台进入发布页面,撰写200字内简洁内容,可添加9张图或短视频及话题标签以提升推荐。发布前须遵守审核规则:禁发政治敏感、虚假宣传、侵权盗用、低质标题党及夸大医疗效果等内容,避免审核失败或账号限流,保障内容合规与曝…

    2026年9月26日 • 用户投稿
    100
  • 别再浪费纸了!一文掌握“双面打印”的正确姿势

    别再浪费纸了!一文掌握“双面打印”的正确姿势别再浪费纸了!一文掌握“双面打印”的正确姿势别再浪费纸了!一文掌握“双面打印”的正确姿势别再浪费纸了!一文掌握“双面打印”的正确姿势

    你是否也曾为家中或办公室里堆积如山的废纸感到惋惜? 你是否在打印一份几十页的报告时,默默看着打印机“哗哗”吐出厚厚一叠纸张,心里泛起一丝浪费的不安? 其实,你距离成为一位高效、节约又环保的打印高手,只差一个“双面打印”的操作。 别再用“不会设置”、“太麻烦”当作借口,让纸张白白流失。 今天,我们就来…

    2026年9月26日 • 用户投稿
    1500
  • 苹果 AI 功能滞后 外媒建议借鉴对手三大功能迎头赶上

    苹果 AI 功能滞后 外媒建议借鉴对手三大功能迎头赶上苹果 AI 功能滞后 外媒建议借鉴对手三大功能迎头赶上苹果 AI 功能滞后 外媒建议借鉴对手三大功能迎头赶上苹果 AI 功能滞后 外媒建议借鉴对手三大功能迎头赶上

    苹果在人工智能(ai)领域的发展似乎并不顺利。自去年全球开发者大会(wwdc)以来,苹果承诺的众多ai功能至今尚未实现,使得其在这一领域的竞争力比去年6月时有所下降。有外媒建议,苹果可以借鉴竞争对手的三大ai功能来迎头赶上。 借鉴谷歌的Notebook LM 谷歌的Notebook LM具备自定义指…

    2026年9月26日 • 用户投稿
    000
  • 苹果灵动岛怎么关闭app显示

    苹果灵动岛怎么关闭app显示苹果灵动岛怎么关闭app显示苹果灵动岛怎么关闭app显示苹果灵动岛怎么关闭app显示

    是的,可以通过设置关闭苹果灵动岛中 App 显示:解锁 iPhone,打开“设置”应用。向下滚动并点按“灵动岛”。在“显示 App”下,关闭希望停止在灵动岛中显示的 App。 如何关闭苹果灵动岛中的 App 显示 苹果灵动岛是 iPhone 14 Pro 和 Pro Max 机型上的一项新功能,它能…

    2026年9月26日 • 用户投稿
    000
  • 三国谋定天下徐盛大乔怎么搭配 徐盛大乔阵容推荐

    三国谋定天下徐盛大乔怎么搭配 徐盛大乔阵容推荐三国谋定天下徐盛大乔怎么搭配 徐盛大乔阵容推荐三国谋定天下徐盛大乔怎么搭配 徐盛大乔阵容推荐三国谋定天下徐盛大乔怎么搭配 徐盛大乔阵容推荐

    在《三国谋定天下》中,武将的培养与阵容搭配构成了游戏的核心策略体系。近期,徐盛与大乔的组合备受玩家关注,那么三国谋定天下徐盛大乔如何搭配?接下来为大家带来徐盛大乔阵容搭配推荐,一起来看看这套强势组合的玩法思路。 徐盛在游戏中属于典型的防御型武将,拥有高达107点的统帅基础值。其主动技能“百里疑城”在…

    2026年9月26日 • 用户投稿
    000
  • 如何使用Gemini多模态功能 Gemini图文视频输入操作方法详解

    如何使用Gemini多模态功能 Gemini图文视频输入操作方法详解如何使用Gemini多模态功能 Gemini图文视频输入操作方法详解如何使用Gemini多模态功能 Gemini图文视频输入操作方法详解如何使用Gemini多模态功能 Gemini图文视频输入操作方法详解

    本文将详细介绍如何利用Gemini的多模态功能,特别是如何进行图文和视频的联合输入操作。通过阅读本文,您将了解到Gemini如何理解和处理不同类型的信息组合,并掌握将文本、图片和视频融入对话的具体步骤,从而更有效地使用这项强大的AI能力。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无…

    2026年9月26日 • 用户投稿
    100
  • 远程桌面失败:你的凭据不工作

    远程桌面失败:你的凭据不工作远程桌面失败:你的凭据不工作远程桌面失败:你的凭据不工作远程桌面失败:你的凭据不工作

    解决远程桌面连接失败的问题,可以尝试以下几种方法: 方法一: 首先,按Win+R快捷键,输入“secpol.msc”或“gpedit.msc”打开安全策略或组策略编辑器: 然后,找到并更改默认设置,将“仅来宾—本地用户以来宾身份验证”调整为“经典:本地用户以自己的身份验证”。 方法二: 只需调整远程…

    2026年9月26日 • 用户投稿
    100
  • Laravel框架中Pipeline的解析(代码示例)

    本篇文章给大家带来的内容是关于laravel框架中pipeline的解析(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 大家好,今天给大家介绍下Laravel框架的Pipeline。 它是一个非常好用的组件,能够使代码的结构非常清晰。 Laravel的中间件机制便是基于…

    2026年9月26日
    000
  • linux常用命令有哪些 分别是什么意思

    linux常用命令有哪些 分别是什么意思linux常用命令有哪些 分别是什么意思linux常用命令有哪些 分别是什么意思linux常用命令有哪些 分别是什么意思

    Linux 中常用的命令包括:文件和目录管理:ls、cd、mkdir、rmdir、touch文本处理:cat、grep、sed、awk、less进程管理:ps、kill、top、htop、nice网络管理:ping、traceroute、netstat、ifconfig、wget系统管理:reboo…

    2026年9月26日 • 用户投稿
    100
  • 云原生Java监控全套方案:从Micrometer到Grafana可视化看板

    云原生Java监控全套方案:从Micrometer到Grafana可视化看板云原生Java监控全套方案:从Micrometer到Grafana可视化看板云原生Java监控全套方案:从Micrometer到Grafana可视化看板云原生Java监控全套方案:从Micrometer到Grafana可视化看板

    云原生Java监控方案以Micrometer收集指标,Prometheus存储查询,Grafana实现可视化。Micrometer提供供应商中立的API,与Spring Boot Actuator集成,自动暴露JVM、HTTP等指标;通过micrometer-registry-prometheus依…

    2026年9月26日 • 用户投稿
    000
  • 夸克AI写作文靠谱吗_夸克AI写作助手效果与能力评测

    夸克AI写作文靠谱吗_夸克AI写作助手效果与能力评测夸克AI写作文靠谱吗_夸克AI写作助手效果与能力评测夸克AI写作文靠谱吗_夸克AI写作助手效果与能力评测夸克AI写作文靠谱吗_夸克AI写作助手效果与能力评测

    夸克AI写作助手在高考作文辅导中表现优异,能快速构建逻辑清晰的议论文结构,围绕“第二次呼吸”等题目提炼成长主题,分论点衔接自然;引用2024年敦煌数字化修复、马拉松真实数据等新颖素材,增强时代感与说服力;语言表达生动,善用比喻与哲理金句,避免空洞口号;实际应用中获教师认可,助力学生提升写作效率与思维…

    2026年9月26日 • 用户投稿
    100
  • Oracle数据库实例详解

    Oracle数据库实例详解Oracle数据库实例详解Oracle数据库实例详解Oracle数据库实例详解

    Oracle数据库实例详解 Oracle数据库是全球著名的关系型数据库管理系统,被广泛应用于企业级应用程序的数据存储和管理。在Oracle数据库中,数据库实例是一个重要概念,它表示一个Oracle数据库服务器进程和内存结构的集合,用于处理客户端应用程序对数据库的操作请求。在本文中,我们将详细探讨Or…

    2026年9月26日 • 用户投稿
    000
  • 抖音店铺保证金需要缴纳多少?抖店类目保证金

    抖音借助其庞大的流量与用户黏性,成为电商领域的新兴力量。众多商家选择在抖音开设店铺,期望借此拓宽销路。抖音店铺保证金自然成了商家们关注的重点。本文将围绕保证金的缴纳标准、缴纳方式、用途等展开深入分析,助力商家更全面地掌握抖音店铺保证金的相关知识。 一、抖音店铺保证金缴纳标准 1.店铺类型 抖音店铺主…

    2026年9月26日
    100
  • WPS格式文件中的宏如何安全处理_WPS宏安全管理与处理步骤

    WPS格式文件中的宏如何安全处理_WPS宏安全管理与处理步骤WPS格式文件中的宏如何安全处理_WPS宏安全管理与处理步骤WPS格式文件中的宏如何安全处理_WPS宏安全管理与处理步骤WPS格式文件中的宏如何安全处理_WPS宏安全管理与处理步骤

    首先禁用所有宏并启用通知,再检查宏来源与数字签名,对可疑文件使用沙箱环境测试,必要时清除文档宏代码,最后通过受信任位置管理合法宏运行。 如果您在打开WPS格式文件时遇到宏相关提示或安全警告,可能是文档中包含可执行的宏代码。不正确的处理可能导致恶意代码运行,威胁系统安全。以下是针对WPS文件中宏的安全…

    2026年9月26日 • 用户投稿
    100
  • sublime怎么格式化代码_Sublime Text代码格式化设置与快捷键

    sublime怎么格式化代码_Sublime Text代码格式化设置与快捷键sublime怎么格式化代码_Sublime Text代码格式化设置与快捷键sublime怎么格式化代码_Sublime Text代码格式化设置与快捷键sublime怎么格式化代码_Sublime Text代码格式化设置与快捷键

    Sublime Text通过安装HTML-CSS-JS Prettify等插件可实现代码格式化,需先安装Package Control,再通过命令面板搜索并安装插件,随后在Key Bindings中添加快捷键配置,如Ctrl+Alt+F用于格式化JS/HTML/CSS文件,保存后即可使用;注意确保文…

    2026年9月26日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信