यह पता चला है कि यह सीधे SA द्वारा समर्थित नहीं है, लेकिन सही व्यवहार एक ColumnClause
और एक FunctionElement
. पहले आयात करें यह नुस्खा
जैसा कि zzzeek
द्वारा वर्णित है में यह SA मुद्दा
. फिर एक विशेष unnest
create बनाएं फ़ंक्शन जिसमें WITH ORDINALITY
. शामिल है संशोधक:
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"
फिर आप इसे इस तरह से जुड़ने, ऑर्डर करने आदि में उपयोग कर सकते हैं:
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()))