如何在sqlalchemy中查询列以查找最接近的值

2024-04-20 09:03:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以在上面或下面找到下一个值,但我不知道如何用一个查询同时获得这两个值,我觉得自己迷失在了连接、别名和subqueries中?你知道吗

所以if x = 2450:

def get_next_XP_goal(xp):
    session = DbSessionFactory.create_session()

    xp_gaol = session.query(XPAchievement) \
        .filter(XPAchievement.XP_required > xp) \
        .order_by(XPAchievement.XP_required.asc()) \
        .first()

    return xp_gaol

这是3100,这是伟大的。你知道吗

def get_previous_XP_goal(xp):
    session = DbSessionFactory.create_session()

    xp_gaol = session.query(XPAchievement) \
        .filter(XPAchievement.XP_required <= xp) \
        .order_by(XPAchievement.XP_required.desc()) \
        .first()

    return xp_gaol

这是2200这是伟大的。你知道吗


Tags: getbysessiondefcreaterequiredorderfilter
1条回答
网友
1楼 · 发布于 2024-04-20 09:03:28

您可以使用limit():

session.query(XPAchievement) \
    .filter(XPAchievement.XP_required <= xp) \
    .order_by(XPAchievement.XP_required.desc()) \
    .limit(3)

第一个和最后一个是前一个和后一个

相关问题 更多 >