복붙노트

[SQL] 어떻게 SqlAlchem ​​y의에서 "왼쪽 외부 조인"를 실행합니다

SQL

어떻게 SqlAlchem ​​y의에서 "왼쪽 외부 조인"를 실행합니다

나는이 쿼리를 실행해야합니다 ::

select field11, field12
from Table_1 t1
left outer join Table_2 t2 ON t2.tbl1_id = t1.tbl1_id
where t2.tbl2_id is null

파이썬에서 이러한 클래스를했다 :

class Table1(Base):
   ....

class Table2(Base):
   table_id =  Column(
        Integer,
        ForeignKey('Table1.id', ondelete='CASCADE'),
    )
    ....

방법은 아래에서 위까지받을 수 있나요?

해결법

  1. ==============================

    1.

    q = session.query(Table1.field1, Table1.field2)\
        .outerjoin(Table2)\ # use in case you have relationship defined
        # .outerjoin(Table2, Table1.id == Table2.table_id)\ # use if you do not have relationship defined
        .filter(Table2.tbl2_id == None)
    

    FIELD1 및 FIELD2는 표 1에서 것을, 그리고 당신이 관계를 정의하는 것이 가정을 수행해야합니다 :

    class Table2(Base):
        # ...
        table1 = relationship(Table1, backref="table2s")
    
  2. ==============================

    2.당신은 또한 사용 SQLAlchemy의 핵심을 만 수행 할 수 있습니다

    당신은 또한 사용 SQLAlchemy의 핵심을 만 수행 할 수 있습니다

    session.execute(
        select(['field11', 'field12'])
        .select_from(
            Table1.outerjoin(Table2, Table1.tbl1_id == Table2.tbl1_id))
        .where(Table2.tbl2_id.is_(None))
    )
    

    PS의 .outerjoin (테이블 조건 () = TRUE isouter 테이블 조건) .join 동일하다.

  3. from https://stackoverflow.com/questions/26142304/how-to-execute-left-outer-join-in-sqlalchemy by cc-by-sa and MIT license