sqlachemy 核心:如何进行内连接和多重连接

Tar*_*ara 0 python sqlalchemy flask-sqlalchemy

请注意,这是针对核心的,而不是针对 orm 的。

希望有人能帮助我解决这两个问题:

1)看起来很outerjoin简单join,但是如何进行内连接呢?

2)进行多重连接的语法是什么。我能够进行一次连接,但不确定多个连接的语法。

我的第一个连接看起来像这样:

select([...]).select_from(outerjoin(a, b))
Run Code Online (Sandbox Code Playgroud)

但此语法执行两个连接时会产生一些错误:

select([...]).select_from(outerjoin(a, b).select_from(outerjoin(ma, tr))
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Hal*_*Ali 5

  1. join默认情况下执行 INNER JOIN。带参数outerjoin调用。joinisouter=True

如果我们想要的sql查询是

SELECT a.col1, b.col2, c.col3
FROM a
LEFT JOIN b ON a.col1 = b.col1
LEFT JOIN c ON c.col1 = b.col2
Run Code Online (Sandbox Code Playgroud)

那么 sqlalchemy-core 语句应该是:

select(
    [a.c.col1, b.c.col2, c.c.col3]
).select_from(
    a.outerjoin(
        b, a.c.col1 == b.c.col1
    ).outerjoin(
        c, b.c.col2 == c.c.col1
    )
)
Run Code Online (Sandbox Code Playgroud)
  • on clause如果关系已定义且不含糊,则不需要。
  • 这些outerjoin函数可以嵌套而不是链接(就像您对简单连接所做的那样),即

    outerjoin(outerjoin(a, b), c)
    
    Run Code Online (Sandbox Code Playgroud)

    但我发现该表格可读性较差。