【发布时间】:2018-08-22 18:28:48
【问题描述】:
是否有更简洁的语法用于使用 sqlalchemy joinedload 从多个表中急切加载项目,这些表仅通过另一个中间表与查询表相关(或者是否有替代加载语法更适合我正在尝试做)?
比如使用大家熟悉的问题、答案等数据结构,有没有比下面的例子更简洁的方式来查询一个问题,急切加载相关答案,同时急切加载答案cmets和答案投票(假设,对于这个例子,这两个与答案相关的项目都包含在单独的表中)?
from sqlalchemy.orm import joinedload
result = session.query(Question).\
options(
joinedload(Question.answers).
joinedload(Answer.comments)
).\
options(
joinedload(Question.answers).
joinedload(Answer.votes)
).\
filter(Question.id == '1').\
first()
我找不到任何通过Relationship Loading Techniques(或其他任何地方)的中间表加载多个表的示例。我确实尝试在单个 joinedload 中包含多个子关系,例如...
result = session.query(Question).\
options(joinedload(Question.answers, Answer.comments, Answer.votes)).\
filter(Question.id == '1').\
first()
...但是,毫不奇怪,这种方法只是链接连接。
【问题讨论】:
标签: python join sqlalchemy