Det du verkar vara ute efter är DISTINCT ON ... ORDER BY
idiom i Postgresql för att välja största-n -per-grupp
resultat (N =1 ). Så istället för att bara gruppera och aggregera
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
all()
Detta kommer att sluta välja rader "grupperade" efter namn, med det största tidsstämpelvärdet.
Du vill inte använda asterisken för det mesta, inte i din applikationskod i alla fall, om du inte gör manuella ad-hoc-frågor. Asterisken är i princip "alla kolumner från FROM
tabell/relation", som sedan kan bryta dina antaganden senare, om du lägger till kolumner, ordnar om dem och så.
Om du skulle vilja beställa de resulterande raderna baserat på tidsstämpeln i det slutliga resultatet, kan du till exempel använda Query.from_self()
för att vända frågan till en underfråga och beställa i den bifogade frågan:
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()