使用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两个表,左边的表不明确是那个。
我有一个复杂的查询语言, 简化后如下:
db.session.query(tableB.title, func.count(tableB.title)
).outerjoin(tableB, tableB.notice_id == tableA.id
).group_by(tableB.title)
可以使用select_from明确指定主表。正确的如下:
db.session.query(tableB.title, func.count(tableB.title)
).select_from(tableA
).outerjoin(tableB, tableB.notice_id == tableA.id
).group_by(tableB.title)
在我的应用场景下,这个查询可以去掉outerjoin,如下也可以:
db.session.query(tableB.title, func.count(tableB.title)
).group_by(tableB.title)# sqlalchemy说join不明确,那我不用outerjoin