2011-01-03 8 views
18

मैं SQLAlchemy का उपयोग कर रहा दिनांक समय क्षेत्र के साथ कुछ वस्तुओं को स्टोर करने के:पायथन एसक्लएल्चेमी ऑर्डर_बी डेटटाइम?

my_date = Field(DateTime()) 

मैं हाल ही में कुछ वस्तुओं (कि हाल ही में कर रहे हैं my_date क्षेत्र के साथ संस्थाओं) को पुनः प्राप्त करने के लिए एक क्वेरी चलाना चाहते हैं ।

entities = MyEntity.query.order_by(MyEntity.time).limit(3).all() 
entities = MyEntity.query.order_by(-MyEntity.time).limit(3).all() 

लेकिन इन प्रश्नों उसी क्रम में एक ही वस्तुओं वापसी:

मैं निम्नलिखित की कोशिश की है। SqlAlchemy दस्तावेज ऑर्डर को रिवर्स करने के लिए '-' के उपयोग को नोट करता है, लेकिन मुझे निश्चित रूप से कुछ याद आ रहा है।

क्या कोई मदद कर सकता है?

उत्तर

40

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

from sqlalchemy import desc 

यहाँ some documentation है:

entities = MyEntity.query.order_by(desc(MyEntity.time)).limit(3).all() 

आप की आवश्यकता हो सकती।

+0

यह ऑपरेशन मेरे डेटाबेस पर दर्दनाक धीमा है। क्या कोई तेज तरीका है? – kalu

+0

@kalu: क्या आप उचित इंडेक्स का उपयोग कर रहे हैं? जेनरेट किए गए एसक्यूएल को देखने का प्रयास करें, और इसे प्रोफाइल करें। – thirtydot

1

मैं नियमित रूप से sqlalchemy का उपयोग करता हूं, इसलिए मैं पुष्टि कर सकता हूं कि थर्डॉट का उत्तर सही है, आपको का उपयोग - ऑपरेटर को order_by को प्रभावित करने के लिए करने की आवश्यकता है।

4
entities = MyEntity.query.order_by(MyEntity.my_date.desc()).limit(3).all() 

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

+0

मैं इसे पसंद करता हूं क्योंकि यह 'आयात' से बचाता है। – gwg

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