使用多个列名的SQLAlchemy连接语法

时间:2018-07-04 02:02:28

标签: python sql sqlite sqlalchemy

这是我要执行的以下SQL查询,可在命令行上完美运行:

select * from table1 join table2 using (col1, col2)

我不知道如何使用SQLAlchemy来执行此操作,将不胜感激。

表之间没有外键。表格行只能通过多列中匹配的值进行配对。

谢谢!

1 个答案:

答案 0 :(得分:1)

考虑Entity1映射到table1,而Entity2映射到table2:

rows = session
    .query(Entity1, Entity2)
    .join(Entity2, (Entity1.col1==Entity2.col1) & (Entity1.col2==Entity2.col2))
    .all()

rows将是一个元组列表,其中rows[][0]Entity1,而rows[][1]Entity2。 您可以使用.join(),然后在第二个参数中指定连接条件。如果省略联接条件,则仅.query()方法将在table1和table2之间生成交叉联接。