111 votes

Comment obtenir le dernier enregistrement

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 disque ?

220voto

miku Points 63392

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

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

9voto

Robert Points 73

Il est parfois 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)))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X