PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jaki jest prawidłowy sposób używania differ na (Postgres) z SqlAlchemy?

Wydaje się, że szukasz DISTINCT ON ... ORDER BY idiom w Postgresql do wybierania wyniki (N =1 ). Więc zamiast grupować i agregować tylko

event_list = Table.query.\
    distinct(Table.name).\
    filter_by(**filter_by_query).\
    filter(*queries).\
    order_by(Table.name, Table.timestamp.desc()).\
    all()

Spowoduje to wybranie wierszy „pogrupowanych” według nazwy, o największej wartości sygnatury czasowej.

Nie chcesz używać gwiazdki przez większość czasu, w każdym razie nie w kodzie aplikacji, chyba że wykonujesz ręczne zapytania ad-hoc. Gwiazdka to w zasadzie „wszystkie kolumny z FROM tabela/relacja”, co może później złamać Twoje założenia, jeśli dodasz kolumny, zmienisz ich kolejność i tak dalej.

Jeśli chcesz uporządkować wynikowe wiersze na podstawie znacznika czasu w ostatecznym wyniku, możesz użyć na przykład Query.from_self() aby zmienić zapytanie na podzapytanie i uporządkować w zapytaniu dołączającym:

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()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązać Metoda org.postgresql.jdbc.PgConnection.createBlob() nie jest jeszcze zaimplementowana

  2. Postgresql, wybierz puste pola

  3. pg_dump baza danych postgres ze zdalnego serwera, gdy port 5432 jest zablokowany

  4. Jak rejestrować zapytania w PostgreSQL

  5. Jak zainstalować PgBackRest