यहाँ मेरी क्वेरी है।

query = dbsession.query(Parent)\
    .options(joinedload(Parent.child))\
    .first()

मॉडल Child, Parent.child संबंध के माध्यम से उपलब्ध है और इसमें 'कॉलम' नामक कॉलम स्थगित है। ऊपर सूचीबद्ध क्वेरी का उपयोग करके उस कॉलम को अनिर्धारित और लोड कैसे करें?

0
drootnar 7 सितंबर 2016, 13:56
क्या आपने .options(undefer(Child.column)) (सिर्फ अनुमान लगाते हुए) जोड़ने की कोशिश की है?
 – 
Ilja Everilä
7 सितंबर 2016, 13:59
अंडरफर फ़ंक्शन मैपर्स को स्वीकार नहीं करता है। दस्तावेज़ देखें: docs.sqlalchemy.org/en/latest /orm/…
 – 
drootnar
7 सितंबर 2016, 14:01

1 उत्तर

सबसे बढ़िया उत्तर

के साथ जुड़े हुए लोड के माध्यम से अनिर्धारित विकल्प को श्रृंखलाबद्ध करें

joinedload(Parent.child).undefer('column')

और दस्तावेज़ देखें लोडर पर।

निम्नलिखित मॉडलों को देखते हुए:

In [3]: class A(Base):
   ...:     __tablename__ = 'a'
   ...:     id = Column(Integer, primary_key=True)
   ...:     

In [4]: class B(Base):
   ...:     __tablename__ = 'b'
   ...:     id = Column(Integer, ForeignKey('a.id'), primary_key=True)
   ...:     value = deferred(Column(Integer))
   ...:     a = relationship('A', backref='bs')
   ...:

अवमानना ​​value

In [21]: print(session.query(A).options(joinedload(A.bs).undefer('value')))
SELECT a.id AS a_id, b_1.value AS b_1_value, b_1.id AS b_1_id 
FROM a LEFT OUTER JOIN b AS b_1 ON a.id = b_1.id

के बग़ैर

In [17]: print(session.query(A).options(joinedload(A.bs)))
SELECT a.id AS a_id, b_1.id AS b_1_id 
FROM a LEFT OUTER JOIN b AS b_1 ON a.id = b_1.id
2
Ilja Everilä 7 सितंबर 2016, 14:17