2010-03-12 12 views
5

को अलग करने से पहले पूर्ण लोड उदाहरण है कि सत्र से अलग होने से पहले कुछ एसक्यूएलकेमी ओआरएम मैप किए गए इंस्टेंस (इसके संबंधित ऑब्जेक्ट्स के साथ) को पूरी तरह लोड करने का तरीका है? मैं इसे अन्य प्रक्रियाओं में पाइप के माध्यम से भेजना चाहता हूं और मैं इसे इस नई प्रक्रिया में सत्र में विलय नहीं करना चाहता हूं।SQLAlchemy -

धन्यवाद
जनवरी

उत्तर

2

मेरा मानना ​​है कि आप options() method on the Query, with eagerload() or eagerload_all() का उपयोग करना चाहेंगे।

यहाँ हमारे क्षुधा में से एक है, जहां कक्षा Controlled एक रिश्ता changes कहा जाता है जो DocumentChange रिकॉर्ड है, जो खुद को एक संबंध dco कि उदाहरण के प्रति एक Dco वस्तु में लाता है के एक झुंड में लाता है से उपयोग का एक उदाहरण है। यह दो स्तर के उत्सुक भार है, इस प्रकार eagerload_all() का उपयोग। हम declarative एक्सटेंशन (मामले में मामले में) का उपयोग कर रहे हैं और m.Session एक "स्कॉप्ड" (थ्रेड-लोकल) सत्र है।

from sqlalchemy.orm import eagerload, eagerload_all 
... 
controlled_docs = (m.Session.query(m.Controlled) 
    .options(eagerload_all('changes.dco')) 
    .order_by('number') 
    .all()) 

अगर वह पर्याप्त नहीं है, शायद एक टुकड़ा या पाठ दिखा कितना प्रासंगिक ORM वर्गों से संबंधित हैं और शामिल मैं इस सवाल का जवाब कैसे उन विकल्पों अपने मामले में इस्तेमाल किया जाएगा दिखाने के लिए अपडेट कर सकते हैं।