通过外键的SQLAlchemy参考列

时间:2019-02-07 21:31:48

标签: python sqlalchemy relationship

如果我有一个operator表和一个user表,并且与user中的operator表有多个关系,其中pm是在relationship()上连接的operator.pm_id == user.idsales是在relationship()上连接的operator.sales_id == user.id,如何从内部引用username列select语句中的user表,类似于以下内容:

stmt = select([operator, operator.pm.username.label('pm'), operator.sales.username.label('sales')])

这显然行不通,但是我该如何完成类似的工作?

1 个答案:

答案 0 :(得分:0)

核心思想是:

stmt = select([operator.name, user.name])
stmt = stmt.select_from(operator.join(user, operator.pm_id==user.id))

您可以通过这种方式使用select_from语句从多个表中生成列的联接。

要添加的最后一部分

  

operator.sales(用户表中的用户名不同)

我仍然不完全了解。但是也许您也可以使用上面的方案来解决这个问题。

编辑:

要明确这一点:您可以无限期地链接此操作,例如

stmt = stmt.select_from(table1.join(table2, table1.key==table2.key).join(table3, table2.key==table3.key))

等等。