可以用SQLalchemy生成显式交叉加入查询,作为以下示例:
SELECT *
FROM foo
CROSS JOIN bar
如果是,怎么样?
我会猜测与此类似的东西
session.query(Foo).crossjoin(Bar).all()
您可以使用内部联接制作笛卡尔产品, 应用条件始终是正确的。 例如。对于Sqlalchemy Orm:
from sqlalchemy.sql.expression import literal
session.query(Foo, Bar).join(Bar, literal(value=True)).all()
现在仅在sqlalchemy中函数(v0.9)。
Sqlalchemy没有明确的方法来指定交叉加入。 恕我直言,所有主要的关系数据库都在您的桌子中有桌子中的桌子时交叉加入,但是它们之间没有加入标准。 我建议使用SQL Expression API而不是SQLalchemy ORM API进行此类任务 - 因此,您将获得结果记录,否则SQLalchemy Orm API将尝试进行对象映射。对于您的例子,我认为Foo和bar是映射的类:join
请参见Sqlalchemy手册中的示例
outerjoin