1. ホーム
  2. python

[解決済み】SQLALchemyで左結合を実行する方法とは?

2022-02-10 07:16:10

質問内容

いくつかのテーブルに対して一連の左結合を行うSQLクエリを持っています。

SELECT
<some attributes>
FROM table1 t1
INNER JOIN table2 t2
      ON attr = 1 AND attr2 = 1
LEFT JOIN table3 t3
    ON t1.Code = t2.Code AND t3.Date_ = t1.Date_
LEFT JOIN tabl4 t4
    ON t4.Code = t1.code AND t4.Date_ = t1.Date_

今のところ、あります。

(sa.select([idc.c.Code])
            .select_from(
                t1.join(t2, and_(t1.c.attr == 1, t2.c.attr2 = 1))
                .join(t3, t3.c.Code == t1.c.Code)))

にする方法がわからないのですが、結合を LEFT JOIN .

解決方法は?

その isouter=True フラグを使用すると LEFT OUTER JOIN と同じである。 LEFT JOIN .

あなたのコードで

(sa.select([idc.c.Code])
        .select_from(
            t1.join(t2, and_(t1.c.attr == 1, t2.c.attr2 = 1))
            .join(t3, t3.c.Code == t1.c.Code, isouter=True)))

宣言的な例です。

session = scoped_session(sessionmaker())
session.query(Model).join(AnotherModel, AnotherModel.model_id == Model.id, isouter=True)