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

SQL स्केलर सबक्वेरी को SQLAlchemy एक्सप्रेशन में कैसे बदलें

as_scalar() , या label() :

subquery = (
    session.query(PropertyValuation.valuation)
    .filter(PropertyValuation.zip_code == Property.address_zip)
    .order_by(func.abs(func.datediff(PropertyValuation.as_of, Sale.date_sold)))
    .limit(1)
)

query = session.query(Sale.agent_id,
                      Sale.property_id,
                      Property.address_zip,
                      # `subquery.as_scalar()` or
                      subquery.label('back_valuation'))\
        .join(Property)

as_scalar() का उपयोग करना कॉलम और पंक्तियों को 1 तक सीमित करता है, इसलिए आप इसका उपयोग करके संपूर्ण मॉडल ऑब्जेक्ट प्राप्त नहीं कर सकते हैं (जैसा कि query(PropertyValuation) PropertyValuation . की सभी विशेषताओं का चयन है ), लेकिन केवल मूल्यांकन . प्राप्त करना विशेषता काम करती है।

इसे बाद में पास करने की कोई आवश्यकता नहीं है। सबक्वेरी घोषित करने का आपका वर्तमान तरीका ठीक है, क्योंकि SQLAlchemy ऑब्जेक्ट्स से स्वचालित रूप से एक संलग्न क्वेरी से संबंधित हैं . मैंने ऐसे मॉडल बनाने की कोशिश की जो कुछ हद तक आपके पास का प्रतिनिधित्व करते हैं, और यहां बताया गया है कि ऊपर की क्वेरी कैसे काम करती है (अतिरिक्त लाइन-ब्रेक और पठनीयता के लिए इंडेंटेशन के साथ):

In [10]: print(query)
SELECT sale.agent_id AS sale_agent_id,
       sale.property_id AS sale_property_id,
       property.address_zip AS property_address_zip,
       (SELECT property_valuations.valuation
        FROM property_valuations 
        WHERE property_valuations.zip_code = property.address_zip
        ORDER BY abs(datediff(property_valuations.as_of, sale.date_sold))
        LIMIT ? OFFSET ?) AS back_valuation 
FROM sale
JOIN property ON property.id = sale.property_id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विभाजित दिनांक संबंधित सप्ताहों में होती है

  2. सिम्फनी 1.4 प्रोपेल:बिल्ड-ऑल मैसकल 5.5 पर काम नहीं कर रहा है

  3. कोडइग्निटर में काम नहीं कर रहा बटन हटाएं

  4. mongoDB बनाम mySQL - कुछ पहलुओं में एक दूसरे से बेहतर क्यों है?

  5. हाईचार्ट - JSON डेटा प्रदर्शित करें - MYSQL / PHP