You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:54:42