我有一个sqlalchamy
查询和SQL
查询,我认为这些查询相同但会返回不同的结果。关于sqlalchemy
,我有什么遗漏?
sqlalchemy代码:
session.query(Table1)\
.join(Table2)\
.join(Table3)\
.filter(Table3.data == X)\
.filter(Table1.other_data == Y)\
.all()
SQL查询:
select Table1.*
from Table1
join Table2 on Table2.table1_id = Table1.id
join Table3 on Table2.id = Table3.table2_id
where Table3.data = X
and Table1.other_data = Y;
Table2
在Table1
中有外键,而Table3
在表Table2
中有外语,因此sqlalchemy应该可以很好地加入它们。 Table3
没有来自Table1
的外键。
sqlalchemy
代码返回1个结果,而SQL
返回3个重复项,所以我的问题是:sqlalchemy
做了一些我不知道的事情吗?