Was Sie zu suchen scheinen, ist der DISTINCT ON ... ORDER BY
Redewendung in Postgresql für die Auswahl von greatest-n -pro Gruppe
Ergebnisse (N =1 ). Anstatt also nur zu gruppieren und zu aggregieren
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
all()
Dadurch werden nach Namen "gruppierte" Zeilen mit dem größten Zeitstempelwert ausgewählt.
Sie möchten das Sternchen die meiste Zeit nicht verwenden, jedenfalls nicht in Ihrem Anwendungscode, es sei denn, Sie führen manuelle Ad-hoc-Abfragen durch. Das Sternchen ist im Grunde "alle Spalten aus dem FROM
table/relation", was später Ihre Annahmen brechen könnte, wenn Sie Spalten hinzufügen, sie neu anordnen und so weiter.
Falls Sie die resultierenden Zeilen basierend auf dem Zeitstempel im Endergebnis sortieren möchten, können Sie beispielsweise Query.from_self()
um die Abfrage in eine Unterabfrage umzuwandeln und in der einschließenden Abfrage zu bestellen:
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()