2011-12-18 10 views
34

Potrzebuję uzyskać ostatni rekord z db. Używam sqlalchemy. Obecnie robię tak:Jak uzyskać ostatni rekord

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

Ale to zbyt ciężkie zapytania. Jak mogę poprawić ostatnią płytę?

Odpowiedz

76

Spójrz na Query.first(). Jeśli określisz sort w prawej kolumnie, pierwsza będzie twoja ostatnia. Przykładem może wyglądać następująco:

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

Dzięki! 'ObjectRes.query.order_by ('- id'). First()' – dimazubrik

2

Czasami trudno jest sformułować proste rzeczy:

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

ale ten pracował dla mnie:

session.query(ObjectRes).filter(ObjectRes.id == session.query(func.max(ObjectRes.id))) 
Powiązane problemy