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?
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()
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)))