2013-04-03 8 views
30

मैं फ्लास्क और स्क्लाक्लेमी का उपयोग कर रहा हूं।एकाधिक ऑर्डर_बी sqlalchemy/फ्लास्क

मान लें कि मेरे पास फ़ील्ड की लोकप्रियता और 'date_created' के साथ एक उपयोगकर्ता मॉडल है। मैं निम्नलिखित क्वेरी करना चाहता हूं:

SELECT * FROM user ORDER BY popularity DESC, date_created DESC LIMIT 10 

मैं स्क्लाक्लेमी में एकाधिक ऑर्डर_बी कैसे कर सकता हूं? एक भी एक के लिए, यह काम करता है:

User.query.order_by(User.popularity.desc()).limit(10).all() 

मैं सिर्फ एक और order_by जोड़ना चाहिए? या मेरे वर्तमान order_by में दोनों लोकप्रियता और date_created डाल दिया? मैं आदेश के लिए date_created पर लोकप्रियता प्राथमिकता चाहते हैं।

बहुत बहुत धन्यवाद!

उत्तर

46

यह काम करना चाहिए

User.query.order_by(User.popularity.desc(),User.date_created.desc()).limit(10).all() 
+0

खैर तथ्य यह है कि मैंने कोशिश की 'User.query.order_by (User.popularity.desc(), User.date_created.desc())। सीमा (10) है। सभी() ' ' User.query.order_by (User.popularity.desc())। order_by (User.date_created.desc())। सीमा (10) .all() ' ' User.query.order_by (User.date_created.desc())। सीमा (10) .all() ' और वे मुझे अलग-अलग परिणाम देते हैं ... तो ऐसा लगता है कि दूसरा आदेश देने से पहले न तो ओवरराइड होता है एक और ऑर्डर की स्थिति को पहले में जोड़ता है? –

+0

(और इनमें से कोई भी प्रश्न विफल नहीं होता है, वे सभी मुझे परिणाम देते हैं, मुझे नहीं पता कि पहले दो में से कौन सा मुझे चाहिए) –

+3

ठीक है, वास्तव में दोनों मुझे एक ही जवाब देते हैं, और मैंने अंतर्निहित पाया एसक्यूएल क्वेरी (धन्यवाद http://stackoverflow.com/questions/4617291/how-do-i-get-a-raw-compiled-sql-query-from-a-sqlalchemy-expression) और वे वास्तव में वही हैं, और सही एक। क्षमा करें, और आपके उत्तर के लिए बहुत बहुत धन्यवाद! –

संबंधित मुद्दे