How to get last record

Take a look at Query.first(). If you specify a sort on the right column, the first will be your last. An example could look like this:

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

Don't forget to disable existing ordering if needed

In my case I have dynamic ordered relationships:

class Match:
  ...
  records = relationship("Record", backref="match", lazy="dynamic", order_by="Record.id")

And when I tried accepted answer I got first record, not the last, cause ORDER BY were applied twice and spoiled the results.

According to documentation:

All existing ORDER BY settings can be suppressed by passing None

So the solution will be:

match = db_session.query(Match).first()
last_record = match.records.order_by(None).order_by(Record.id.desc()).first()

Sometimes it is difficult to reformulate simple things:

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

but this worked for me:

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