簡體   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