Sqlalchemy 如果连接了backref,则subqueryload不会填充关系

Sqlalchemy 如果连接了backref,则subqueryload不会填充关系,sqlalchemy,Sqlalchemy,为什么案例4(参见输出)没有提供相关的子级。如果backref是joinedload,则子QueryLoad不会填充关系,这看起来像是发生了这种情况。但这背后的逻辑是什么?是虫子吗 请注意这些行之间的差异: children1 = relationship('Child1', back_populates='parent', cascade='all', lazy='noload') children2 = relationship('Child2', back_populates='paren

为什么案例4(参见输出)没有提供相关的子级。如果backref是joinedload,则子QueryLoad不会填充关系,这看起来像是发生了这种情况。但这背后的逻辑是什么?是虫子吗

请注意这些行之间的差异:

children1 = relationship('Child1', back_populates='parent', cascade='all', lazy='noload')
children2 = relationship('Child2', back_populates='parent', cascade='all', lazy='noload')
parent = relationship('Parent', back_populates='children1', cascade='all', lazy='joined')
parent = relationship('Parent', back_populates='children2', cascade='all', lazy='subquery')

parent = session3.query(Parent).options([joinedload('children1')]).get(1)
parent = session4.query(Parent).options([joinedload('children2')]).get(1)
parent = session5.query(Parent).options([subqueryload('children1')]).get(1)
parent = session6.query(Parent).options([subqueryload('children2')]).get(1)
--------代码---------

输出

CASE 1 (no options): 1 [] []
CASE 2 (joined vs joinedload): 1 [(1, u'child1_1', 1), (2, u'child1_2', 1)]
CASE 3 (subquery vs joinedload): 1 [(1, u'child2_1', 1), (2, u'child2_2', 1)]
CASE 4 (joined vs subqueryload): 1 []
CASE 5 (subquery vs subqueryload): 1 [(1, u'child2_1', 1), (2, u'child2_2', 1)]
这是一只虫子。请看
CASE 1 (no options): 1 [] []
CASE 2 (joined vs joinedload): 1 [(1, u'child1_1', 1), (2, u'child1_2', 1)]
CASE 3 (subquery vs joinedload): 1 [(1, u'child2_1', 1), (2, u'child2_2', 1)]
CASE 4 (joined vs subqueryload): 1 []
CASE 5 (subquery vs subqueryload): 1 [(1, u'child2_1', 1), (2, u'child2_2', 1)]