代码之家  ›  专栏  ›  技术社区  ›  Salman Farsi

列中的最后一条记录,SQLALCHEMY

  •  6
  • Salman Farsi  · 技术社区  · 8 年前

    我试图用这个来获取我专栏中的最后一条记录

     ObjectRes.query.order_by('-id').first()
    

    但结果是:没有

    我尝试使用所有其他查询,唯一有效的是

    obj = ObjectRes.query.all()
    return str(obj[-1].id)
    

    查询太重,需要在Pythonywhere上使用更轻的查询。谢谢

    2 回复  |  直到 8 年前
        1
  •  10
  •   daveruinseverything    8 年前

    SQLAlchemy模型中的列附带了产生这种行为的方法。要按ID降序排序,请执行以下操作:

    descending = Object.query.order_by(Object.id.desc())
    last_item = descending.first()
    

    指定 Object.field 是选择字段排序依据的最清晰语法,所有列/模型属性都应支持 .desc() .asc()

    当然,您也可以在一行程序中执行此操作:

    last_item = Object.query.order_by(Object.id.desc()).first()
    
        2
  •  0
  •   Evan ApRhys    4 年前

    我会发表评论,但我需要50个代表,所以,抱歉,我要破坏你的答案,说它不完整(笑话)。虽然,这可能是Sqlalchemy在过去4年中发生了变化,而不是你的错。

    您需要添加 (Object) 之间 .query .order_by

    两行回答应如下所示:

    降序=对象。查询(对象)。order\u by(Object.id.desc())
    最后一项=降序。第一个()

    一行答案应如下所示:

    last\u item=对象。查询(对象)。order\u by(Object.id.desc())。第一个()