Python 如何获得最后一张唱片

Python 如何获得最后一张唱片,python,sqlalchemy,flask,Python,Sqlalchemy,Flask,我需要从数据库中获取最后一条记录。我在用炼金术。 目前,我正在这样做: obj = ObjectRes.query.all() return str(obj[-1].id) 但这是一个太沉重的问题。如何才能更好地录制上一张唱片?请看一看。如果在右侧列中指定了,则第一个将是最后一个。一个例子如下所示: obj = session.query(ObjectRes).order_by(ObjectRes.id.desc()).first() 有时很难重新表述简单的事情: SELECT * FROM

我需要从数据库中获取最后一条记录。我在用炼金术。 目前,我正在这样做:

obj = ObjectRes.query.all()
return str(obj[-1].id)
但这是一个太沉重的问题。如何才能更好地录制上一张唱片?

请看一看。如果在右侧列中指定了,则第一个将是最后一个。一个例子如下所示:

obj = session.query(ObjectRes).order_by(ObjectRes.id.desc()).first()

有时很难重新表述简单的事情:

SELECT * FROM ObjectRes WHERE id IN (SELECT MAX(id) FROM ObjectRes)
但这对我起了作用:

session.query(ObjectRes).filter(ObjectRes.id == session.query(func.max(ObjectRes.id)))

如果需要,请不要忘记禁用现有订购

在我的例子中,我有动态有序关系:

class Match:
  ...
  records = relationship("Record", backref="match", lazy="dynamic", order_by="Record.id")
当我尝试接受答案时,我得到的是第一条记录,而不是最后一条,因为
orderby
应用了两次,破坏了结果

根据:

通过传递None可以抑制所有现有的ORDER BY设置

因此,解决方案将是:

match = db_session.query(Match).first()
last_record = match.records.order_by(None).order_by(Record.id.desc()).first()

谢谢
ObjectRes.query.order_by('-id').first()
@dimazubrik我使用它得到一个警告
SAWarning:无法解析标签引用'-id';转换为文本()(此警告可能在出现10次后被抑制)
^这现在已成为一个错误;我使用
Model.query.order\u by(-Model.field\u name).first()
来检索所需的对象这实际上是返回查询的所有值,然后只弹出第一个值(即超级低效),还是聪明到可以在引擎盖下实现类似于
order by desc LIMIT 1
的功能?