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
的功能?