Python Sqlalchemy Order_By Datetime?

I'm using SqlAlchemy to store some objects with a DateTime field:

my_date = Field(DateTime())

I'd like to run a query to retrieve the most recent few objects (Entities with the my_date field that are the most recent).

I've tried the following:

entities = MyEntity.query.order_by(MyEntity.time).limit(3).all()
entities = MyEntity.query.order_by(-MyEntity.time).limit(3).all()

But these queries return the same objects in the same order. The SqlAlchemy documentation notes the use of the '-' to reverse the order, but I'm surely missing something here.

Can anyone help?

3 Answers

You can do it like this:

entities = MyEntity.query.order_by(desc(MyEntity.time)).limit(3).all()

You might need to:

from sqlalchemy import desc

Here's some documentation.

Another option is this:

stmt = select([users_table]).order_by(users_table.c.name.desc())
4
entities = MyEntity.query.order_by(MyEntity.my_date.desc()).limit(3).all()

should work.

1

You can use like this

from sqlalchemy import desc

db.session.query(MyEntity).order_by(desc(MyEntity.time))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest