FastAPI+SQLAlchemy如何查询指定日期最后一条数据或按ID降序?
解决方案
1. 获取指定日期的最后一条数据
由于id是自增主键,最新插入的记录id值最大,只需对id降序排序后取第一条即可:
def get_last_workday(db: Session, workday_date: date): return db.query(DBWorkday).where(DBWorkday.date == workday_date).order_by(DBWorkday.id.desc()).first()
对应新增接口路由:
@app.get('/workday/{date}/last') def get_last_workday_view(date: date, db: Session = Depends(get_db)): return get_last_workday(db, date)
2. 获取指定日期按ID从高到低排序的全部结果
过滤日期后,按id降序排序,用all()获取所有匹配记录:
def get_workdays_by_date_desc_id(db: Session, workday_date: date) -> List[DBWorkday]: return db.query(DBWorkday).where(DBWorkday.date == workday_date).order_by(DBWorkday.id.desc()).all()
对应新增接口路由(指定response_model确保返回格式符合Pydantic模型):
@app.get('/workdays/{date}/desc', response_model=List[Workday]) def get_workdays_desc_view(date: date, db: Session = Depends(get_db)): return get_workdays_by_date_desc_id(db, date)
补充说明
如果你的表中有专门的创建时间字段(如created_at),也可以用该字段替代id进行排序,逻辑一致:
# 假设DBWorkday有created_at字段 .order_by(DBWorkday.created_at.desc())
内容的提问来源于stack exchange,提问作者theautomation
相关产品推荐
相关产品推荐

