web-dev-qa-db-fra.com

Comment obtenir le dernier record

J'ai besoin d'obtenir le dernier enregistrement de db. J'utilise sqlalchemy. En ce moment, je fais comme ça:

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

Mais c'est une requête trop lourde. Comment puis-je améliorer le dernier record?

50
dimazubrik

Jetez un oeil à Query.first() . Si vous spécifiez un tri dans la colonne de droite, le premier sera le dernier. Un exemple pourrait ressembler à ceci:

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

Parfois, il est difficile de reformuler des choses simples:

SELECT * FROM ObjectRes WHERE id IN (SELECT MAX(id) FROM ObjectRes)

mais cela a fonctionné pour moi:

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