
FastAPI高效实现数据范围筛选,媲美Django-filter
Django的django-filter库提供便捷的数据库范围筛选功能。本文将探讨如何在FastAPI中高效实现类似功能,无需依赖额外库。
FastAPI本身不包含类似django-filter的工具,但我们可以巧妙地利用SQLAlchemy的filter方法和操作符来实现。SQLAlchemy提供强大的ORM功能,方便构建数据库查询。
假设我们有一个名为Series的模型,包含company_id、confirm_at、created_at和rating_score字段。 以下代码演示如何在FastAPI中实现类似django-filter的范围筛选:
from fastapi import FastAPI, Queryfrom sqlalchemy import create_engine, textfrom sqlalchemy.orm import sessionmakerfrom typing import List, Optional# ... (数据库连接配置) ...engine = create_engine("你的数据库连接字符串") # 请替换为你的数据库连接字符串SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)app = FastAPI()@app.get("/series")async def get_series( company: Optional[List[int]] = Query(None), confirm_start: Optional[str] = Query(None), confirm_end: Optional[str] = Query(None), score_min: Optional[int] = Query(None), score_max: Optional[int] = Query(None),): with SessionLocal() as db: query = db.query(Series) # Series 为你的数据库模型 if company: query = query.filter(Series.company_id.in_(company)) if confirm_start: query = query.filter(Series.confirm_at >= confirm_start) if confirm_end: query = query.filter(Series.confirm_at = score_min) if score_max: query = query.filter(Series.rating_score <= score_max) results = query.all() return results
这段代码利用SQLAlchemy的filter方法和比较操作符(>=, )构建数据库查询。 通过Query参数,可以灵活地接收用户输入的筛选条件。 Optional[List[int]]和Optional[str]确保参数可以为空,避免报错。 代码清晰简洁,易于理解和维护,有效地实现了FastAPI中的范围筛选功能,与django-filter的功能类似。 请记住替换 "你的数据库连接字符串" 为你实际的数据库连接信息,并且确保Series模型已正确定义。
以上就是FastAPI如何高效实现类似Django-filter的大于小于范围筛选?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1358621.html
微信扫一扫
支付宝扫一扫