Quello che sembra che tu stia cercando è il DISTINCT ON ... ORDER BY
idioma in Postgresql per selezionare greatest-n -per gruppo
risultati (N =1 ). Quindi, invece di raggruppare e aggregare solo
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
all()
Questo finirà per selezionare le righe "raggruppate" per nome, con il valore di timestamp maggiore.
Non si desidera utilizzare l'asterisco per la maggior parte del tempo, comunque non nel codice dell'applicazione, a meno che non si eseguano query manuali ad hoc. L'asterisco è fondamentalmente "tutte le colonne da FROM
tabella/relazione", che potrebbe quindi infrangere le tue ipotesi in seguito, se aggiungi colonne, le riordini e così via.
Nel caso in cui desideri ordinare le righe risultanti in base al timestamp nel risultato finale, puoi utilizzare ad esempio Query.from_self()
per trasformare la query in una sottoquery e ordinare nella query che la racchiude:
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()