2010-02-01 11 views
27

में विशिष्ट कॉलम मानों का चयन करना एक छोटी सी लिपि में मैं स्क्लाक्लेमी और एलिक्सीर का उपयोग कर लिख रहा हूं, मुझे किसी विशेष कॉलम के लिए सभी विशिष्ट मान प्राप्त करने की आवश्यकता है। साधारण एसक्यूएल में यहSQLAlchemy/Elixir

SELECT DISTINCT `column` FROM `table`; 

का एक सरल बात होगी और मैं जानता हूँ कि मैं सिर्फ इतना है कि क्वेरी चला सकते हैं "मैन्युअल रूप से," लेकिन मैं नहीं बल्कि अगर मैं SQLAlchemy कथात्मक वाक्य रचना करने के लिए (अमृत और/या) छड़ी होगी कर सकते हैं। मुझे यकीन है कि यह संभव होना चाहिए, मैंने एसक्यूएलकेमी दस्तावेज में इस तरह की चीज के लिए भी अलौकिकताओं को देखा है, लेकिन मैं उस दस्तावेज के माध्यम से घंटों (साथ ही साथ एलिक्सीर) के लिए शिकार कर रहा हूं और मैं बस नहीं कर सकता वास्तव में यह पता लगाना प्रतीत होता है कि यह कैसे किया जाएगा। तो मुझे क्या याद आ रही है?

उत्तर

59

आप मैप किए गए वर्गों के स्तंभ गुणों को क्वेरी कर सकता है और क्वेरी वर्ग एक उत्पादक distinct() विधि है:

for value in Session.query(Table.column).distinct(): 
    pass 
+0

एचएम, अच्छी तरह से मैंने शपथ ली थी कि मैंने कोशिश की और मुझे एक त्रुटि मिली ... लेकिन स्पष्ट रूप से नहीं। यह काम करता है, धन्यवाद! –

+0

कोशिश कर रहा है, मुझे एक 'क्वेरी' ऑब्जेक्ट कॉल करने योग्य त्रुटि नहीं है ...: \ कोई विचार क्या मैं गलत कर रहा हूं? – kafuchau

+2

kchau: क्या यह हो सकता है कि आप सत्र पर क्वेरी विधि के बजाय क्वेरी_प्रोपर्टी डिस्क्रिप्टर को कक्षा में कॉल करने का प्रयास कर रहे हैं? तो session.query (...) के बजाय SomeClass.query (...)? –

2

इस वर्ग के लिए:

class Assurance(db.Model): 
    name = Column(String) 

आप यह कर सकते हैं:

assurances = [] 
for assurance in Assurance.query.distinct(Assurance.name): 
    assurances.append(assurance.name) 

और आपके पास अलग-अलग मानों की सूची होगी

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

  • कोई संबंधित समस्या नहीं^_^