sqlalchemy 1.3中的交叉连接

2024-09-30 16:24:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我不明白如何用交叉连接连接两个表。 Earler,在sqlalchemy 1.1.4版,我是这样做的:

A = Table1.sa 
B = Table2.sa
my_query = A.query().join(B, literal(True))

但在更新到1.3版之后,出现了引发异常:

sqlalchemy.exc.InvalidRequestError: Can't determine which FROM clause to join from, there are multiple FROMS which can join to this entity. Try adding an explicit ON clause to help resolve the ambiguity.

我明白这意味着我必须做这样的事情:

^{pr2}$

但是表A没有表B的外键

如何连接两个没有外键的交叉连接表? 谢谢。在


Tags: totruewhichsqlalchemymysaclausequery
3条回答

交叉连接不使用连接条件,因此Table1和{}之间不能有任何ON。在交叉连接中,T1中的每一行都与来自T2的所有行连接。你确定要使用交叉连接吗?在

谢谢你的回答。异常被引发,因为查询无法确定哪个表是左表,而into query(…)使用表B的字段。在我显式指示左表之后,此异常消失了。在

my_query = A.query(...).join(B, A.id != None)

执行交叉联接的最简单方法是从两个表中进行选择,而不提供任何过滤器来执行ANSI联接:

my_query = session.query(A, B)

这将产生a和B实体的笛卡尔积(cross-join),不需要任何变通方法。在

相关问题 更多 >