sql >> Database >  >> RDS >> PostgreSQL

Deelnemen met set-retourfunctie (SRF) en toegangskolommen in SQLAlchemy

Het blijkt dat dit niet direct wordt ondersteund door SA, maar het juiste gedrag kan worden bereikt met een ColumnClause en een FunctionElement . Importeer eerst dit recept zoals beschreven door zzzeek in dit SA-probleem . Maak dan een speciaal unnest functie die de WITH ORDINALITY . bevat modificatie:

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"

Je kunt het dan gebruiken in joins, bestellen, etc. als volgt:

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. Toon alle datums tussen, ook als er geen resultaat is

  2. Mysql group_concat van herhaalde sleutels en aantal herhalingen van meerdere kolommen in 1 query (Query Optimization)

  3. Tellen hogere rijen mee in mysql explain betekent goed of slecht?

  4. Welk MySQL-stuurprogramma voor Node.js werkt op Windows?