【问题标题】:Sqlalchemy get last X rows in orderSqlalchemy 按顺序获取最后 X 行
【发布时间】:2012-09-02 22:13:04
【问题描述】:

我需要从表中获取最后 X 行,但要按照 ID 的顺序。我怎样才能做到这一点?

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:
    query = users.select().order_by(users.c.id.desc()).limit(5)
    
    print reversed(conn.execute(query).fetchall() )
    

    反正是这样的

    【讨论】:

    • 我不认为该查询将它们保持在 id 的顺序,它会反转 id,所以我最终做的是反转它给我的输出。
    【解决方案2】:

    这对我有用...

    c=session.query(a).order_by(a.id.desc()).limit(2)
    c=c[::-1]
    

    该方案比 BrendanSimon 提出的 python 切片方案快 10 倍。

    【讨论】:

    • 对于核心:st = select([tab]).where(tab.c.timestamp
    【解决方案3】:

    我相信您可以在 order_by 参数前加上“-”来获得相反的顺序。

    query = users.select().order_by(-users.c.id.desc()).limit(5)
    

    另外,我相信您可以使用 python 切片来替代限制。

    query = users.select().order_by(users.c.id.desc())[-5:]
    
    query = users.select().order_by(-users.c.id.desc())[:5]
    

    【讨论】:

    • 显然使用负索引会导致在 Python 中获取所有行和切片,而不是发送到 SQL 的 LIMIT
    猜你喜欢
    • 2021-11-07
    • 1970-01-01
    • 2016-02-14
    • 2016-12-28
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2023-01-03
    相关资源
    最近更新 更多