0
这是我的查询。SQLAlchemy:通过加载技术undefer列
query = dbsession.query(Parent)\
.options(joinedload(Parent.child))\
.first()
型号Child
可通过Parent.child
关系,并递延命名为“列”列。如何使用上面列出的查询来下载并加载该列?
这是我的查询。SQLAlchemy:通过加载技术undefer列
query = dbsession.query(Parent)\
.options(joinedload(Parent.child))\
.first()
型号Child
可通过Parent.child
关系,并递延命名为“列”列。如何使用上面列出的查询来下载并加载该列?
链通过加入负载undefer选项与
joinedload(Parent.child).undefer('column')
"Loading Along Paths"见和loaders的文档。
鉴于以下型号:
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')
...:
undeferring 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
它的工作原理,谢谢! – drootnar
您是否尝试过加入'可供选项(undefer(Child.column))'(只猜测)? –
undefer函数不接受映射器。见文档:http://docs.sqlalchemy.org/en/latest/orm/loading_columns.html#sqlalchemy.orm.undefer – drootnar