【发布时间】:2018-12-12 08:58:58
【问题描述】:
这是我要执行的以下 sql 查询,并且可以在命令行上完美运行:
select * from table1 join table2 using (col1, col2)
我不知道如何使用 SQLAlchemy 执行此操作,我们将不胜感激。
表之间没有外键。表格行只能通过匹配多列的值配对。
谢谢!
【问题讨论】:
标签: python sql sqlite sqlalchemy
这是我要执行的以下 sql 查询,并且可以在命令行上完美运行:
select * from table1 join table2 using (col1, col2)
我不知道如何使用 SQLAlchemy 执行此操作,我们将不胜感激。
表之间没有外键。表格行只能通过匹配多列的值配对。
谢谢!
【问题讨论】:
标签: python sql sqlite sqlalchemy
考虑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 之间生成交叉连接。
【讨论】:
session.query(Entity1, Entity2).join(...).all() 吗?这将返回一个元组列表。
() & ()。我正在尝试使用Entity1.col1==Entity2.col1 and Entity1.col2==Entity2.col2,它没有给出预期的结果,但也没有错误:-/