使用SQLALCHEMY的outerjoin时的bug

报错信息:

sqlalchemy.exc.InvalidRequestError: Don't know how to join to <class 'src.models.noticev2.NoticeV2Event'>; please use an ON clause to more clearly establish the left side of this join

大致意思就是,sqlalchemy不知道如何join两个表,左边的表不明确是那个。

我有一个复杂的查询语言, 简化后如下:

python 复制代码
db.session.query(
    tableB.title, func.count(tableB.title)
).outerjoin(
    tableB, tableB.notice_id == tableA.id
).group_by(tableB.title)

可以使用select_from明确指定主表。正确的如下:

python 复制代码
db.session.query(
    tableB.title, func.count(tableB.title)
).select_from(
    tableA
).outerjoin(
    tableB, tableB.notice_id == tableA.id
).group_by(tableB.title)

在我的应用场景下,这个查询可以去掉outerjoin,如下也可以:

python 复制代码
db.session.query(
    tableB.title, func.count(tableB.title)
).group_by(tableB.title)

# sqlalchemy说join不明确,那我不用outerjoin