繁体   English   中英

sqlalchemy从子查询添加实体

[英]sqlalchemy add entity from a subquery

我想在subquery上使用outerjoin操作,并且还包括子查询中的值。

我的密码

q_responses = session.query(Candidate, CandidateProfile)
             .join(CandidateProfile, CandidateProfile.candidate_id == Candidate.id)

subq = (session.query(AppAction.candidate_id, Activity.archived)\
        .join(Activity, and_(AppAction.candidate_id == Activity.candidate_id, 
                             Activity.archived == 1)))\
        .subquery("subq")
responses = q_responses.outerjoin(subq, Candidate.id == subq.c.candidate_id).all()

所以我得到这种格式的结果

(Candidate, CandidateProfile)

但是我也想在结果中包括子查询的存档值。

通过阅读互联网上的许多相关帖子,我尝试了

  1. add_entity(subq.c.archived)
  2. with_entities
  3. add_column
  4. select_from

但是所有这些都导致了一些错误。

请帮帮我。

当您尝试使用add_column时,请分享您的错误。 下面的代码应该可以正常工作(假设它可以正常工作,而无需包含add_column ):

responses = (
    q_responses
    .add_column(subq.c.archived)  # @new
    .outerjoin(subq, Candidate.id == subq.c.candidate_id)
).all()

您也可以立即创建一个查询,其中包含以下列:

subq = (
    session.query(AppAction.candidate_id, Activity.archived)
    .join(Activity, and_(AppAction.candidate_id == Activity.candidate_id,
                         Activity.archived == 1))
).subquery("subq")

q_responses = (
    session.query(Candidate, CandidateProfile, subq.c.archived)
    .join(CandidateProfile, CandidateProfile.candidate_id == Candidate.id)
    .outerjoin(subq, Candidate.id == subq.c.candidate_id)
).all()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM