Python SqlAlchemy order_by DateTime? - PullRequest
       5

Python SqlAlchemy order_by DateTime?

29 голосов
/ 03 января 2011

Я использую SqlAlchemy для хранения некоторых объектов с полем DateTime:

my_date = Field(DateTime())

Я бы хотел выполнить запрос, чтобы получить самые последние несколько объектов (объекты с последним полем my_date).

Я пробовал следующее:

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

Но эти запросы возвращают одни и те же объекты в том же порядке. Документация SqlAlchemy отмечает использование «-» для изменения порядка, но я, безусловно, что-то здесь упускаю.

Может кто-нибудь помочь?

Ответы [ 3 ]

54 голосов
/ 03 января 2011

Вы можете сделать это так:

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

Возможно, вам потребуется:

from sqlalchemy import desc

Вот некоторая документация .

Еще один вариант:

stmt = select([users_table]).order_by(users_table.c.name.desc())
7 голосов
/ 28 апреля 2014
entities = MyEntity.query.order_by(MyEntity.my_date.desc()).limit(3).all()

должно работать.

1 голос
/ 03 января 2011

Я регулярно использую sqlalchemy, чтобы убедиться, что ответ тридцатки правильный, вам нужно использовать sqlalchemy.sql.desc вместо оператора -, чтобы влиять на order_by.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...