2011-12-18 3 views
34

Je dois obtenir le dernier enregistrement de DB. J'utilise sqlalchemy. En ce moment, je fais comme ça:Comment obtenir le dernier enregistrement

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

Mais il est trop lourd requête. Comment puis-je obtenir le dernier record mieux?

Répondre

76

Jetez un coup d'œil à Query.first(). Si vous spécifiez un sort 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() 
+24

Merci! 'ObjectRes.query.order_by ('- id'). First()' – dimazubrik

2

Il est parfois difficile de reformuler les 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))) 
Questions connexes