· 约 2 分钟
21-FastAPI进阶-ORM操作数据-条件查询-比较查询
学习目标
- 学会使用比较条件做 ORM 查询
- 理解等于、大于、小于、范围和集合查询
- 掌握多条件组合的基本写法
核心概念
- 比较查询就是在查询时加上条件,例如:
- 年龄大于 18
- 部门等于“技术部”
- 编号在某个列表中
- SQLAlchemy 中常见比较方式包括:
==>=<=.between(a, b).in_([...])
代码示例
from sqlalchemy import and_, select
@app.get("/users/filter")
def filter_users(db: DbSession):
stmt = select(User).where(
and_(
User.age >= 18,
User.age <= 30,
User.department == "技术部",
)
)
users = db.scalars(stmt).all()
return [UserOut.model_validate(user) for user in users]
@app.get("/users/by-ids")
def get_users_by_ids(db: DbSession):
stmt = select(User).where(User.id.in_([1, 2, 3]))
users = db.scalars(stmt).all()
return [UserOut.model_validate(user) for user in users]
案例理解
- 第一个接口查询“18 到 30 岁之间,且属于技术部”的用户。
- 第二个接口演示按一组编号批量查询用户。
- 这类条件查询非常适合后台筛选功能。
易错点
- 多条件组合时,不要直接用 Python 的
and、or去拼数据库条件。 - 条件特别多时,建议先把条件拆成变量,代码更清晰。
- 范围查询和前端筛选场景结合非常多,建议反复练熟。
我的补充
- 真正的后台系统,列表页很少是“无条件查询”,大多数都是条件查询。
- 所以这一节开始,你已经进入更接近真实开发的部分了。
- 如果你能自己写出年龄、部门、状态的组合筛选,说明 ORM 查询已经入门。