这是我要执行的以下SQL查询,可在命令行上完美运行:
select * from table1 join table2 using (col1, col2)
我不知道如何使用SQLAlchemy来执行此操作,将不胜感激。
表之间没有外键。表格行只能通过多列中匹配的值进行配对。
谢谢!
答案 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之间生成交叉联接。