PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

SQLAlchemy में सेट-रिटर्निंग फ़ंक्शन (SRF) और एक्सेस कॉलम के साथ जुड़ना

यह पता चला है कि यह सीधे 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()))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. uWSGI, फ्लास्क, sqlalchemy, और postgres:SSL त्रुटि:डिक्रिप्शन विफल या खराब रिकॉर्ड मैक

  2. Postgresql उन पंक्तियों का चयन करें जहां कॉलम =सरणी

  3. PLpgSQL फ़ंक्शन मेल खाने वाले शीर्षक नहीं लौटा रहा है

  4. टाइमस्टैम्प (भविष्य सहित) को अभी से पूर्ण दूरी के अनुसार क्रमबद्ध करें

  5. आईडी के साथ रिकॉर्ड खोजने के लिए SQL क्वेरी किसी अन्य तालिका में नहीं है