如何在 SQLALchemy 中执行左连接? [英] How to perform a left join in SQLALchemy?

查看:81
本文介绍了如何在 SQLALchemy 中执行左连接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 SQL 查询,它在几个表上执行一系列左连接:

I have a SQL query which perfroms a series of left joins on a few tables:

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.

but I can't figure out how to make the join a LEFT JOIN.

推荐答案

isouter=True 标志将产生一个 LEFT OUTER JOIN 相同>左加入.

The isouter=True flag will produce a LEFT OUTER JOIN which is the same as a 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)

这篇关于如何在 SQLALchemy 中执行左连接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆