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

Łączenie z funkcją zwracającą zestaw (SRF) i dostępem do kolumn w SQLAlchemy

Okazuje się, że nie jest to bezpośrednio obsługiwane przez SA, ale prawidłowe zachowanie można osiągnąć za pomocą ColumnClause oraz FunctionElement . Najpierw zaimportuj ten przepis zgodnie z opisem zzzeek w ten problem SA . Następnie utwórz specjalne unnest funkcja zawierająca WITH ORDINALITY modyfikator:

class unnest_func(ColumnFunction):
    name = 'unnest'
    column_names = ['unnest', 'ordinality']

@compiles(unnest_func)
def _compile_unnest_func(element, compiler, **kw):
    return compiler.visit_function(element, **kw) + " WITH ORDINALITY"

Możesz go następnie użyć w łączeniu, zamawianiu itp. w ten sposób:

act_ref = unnest_func(Activity.ob_refs)
query = (query
    .add_columns(act_ref.c.unnest, act_ref.c.ordinality)
    .outerjoin(act_ref, sa.true())
    .outerjoin(Subscription, Subscription.ob_ref == act_ref.c.unnest)
    .order_by(act_ref.c.ordinality.desc()))



  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 dodać zmienną liczbę godzin do daty w PostgreSQL?

  2. Jak zdefiniować kolumnę ARRAY w migracji Sequel Postgresql?

  3. Django Different nie działa

  4. Czym dokładnie jest GRANT USAGE ON SCHEMA?

  5. Przejście danych H2 do PostgreSQL