文章内容

2023/12/25 0:02:44,作 者: 黄兵

SQLAlchemy 中 outerjoin() 和 join() 的区别

在SQLAlchemy中,join()outerjoin() 是用于创建 SQL JOIN 操作的两种不同方法。

  1. join() 方法:

    • join() 方法用于创建内连接(inner join)。内连接会返回两个表中满足连接条件的匹配行。

    • 例如,下面的代码使用 join() 方法连接了两个表 table1table2,并且指定了连接条件:

from sqlalchemy import create_engine, Column, Integer, String, MetaData, Table

engine = create_engine('sqlite:///:memory:')
metadata = MetaData()

table1 = Table('table1', metadata,
               Column('id', Integer, primary_key=True),
               Column('name', String))

table2 = Table('table2', metadata,
               Column('id', Integer, primary_key=True),
               Column('value', String))

# 创建内连接
stmt = table1.join(table2, table1.c.id == table2.c.id)

outerjoin() 方法:

  • outerjoin() 方法用于创建外连接(outer join),也称为左连接或右连接。外连接会返回左表的所有行,以及右表中满足连接条件的匹配行。如果没有匹配的行,右表的部分结果将包含 NULL 值。

  • 例如,下面的代码使用 outerjoin() 方法创建了左连接:

# 创建左连接
stmt = table1.outerjoin(table2, table1.c.id == table2.c.id)

总结:join() 方法用于创建内连接,而 outerjoin() 方法用于创建外连接。选择使用哪个方法取决于你希望得到的结果集是否包括没有匹配的行。

分享到:

发表评论

评论列表