Това, което изглежда търсите, е DISTINCT ON ... ORDER BY
идиом в Postgresql за избиране на greatest-n -на-група
резултати (N =1 ). Така че вместо само групиране и агрегиране
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
all()
Това в крайна сметка ще избере редове, „групирани“ по име, имащи най-голяма стойност на клеймото за време.
Не искате да използвате звездичката през повечето време, във всеки случай не и в кода на приложението си, освен ако не правите ръчни ad hoc заявки. Звездицата е основно „всички колони от FROM
таблица/релация", което след това може да наруши вашите предположения по-късно, ако добавите колони, пренаредите ги и други подобни.
В случай, че искате да подредите получените редове въз основа на клеймо за време в крайния резултат, можете да използвате например Query.from_self()
за да превърнете заявката в подзаявка и подредете в придружаващата заявка:
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
from_self().\
order_by(Table.timestamp.desc()).\
all()