【发布时间】:2018-12-06 02:26:42
【问题描述】:
我在 MySQL 中有这个查询:
SELECT
O.id,
O.label,
A.name
FROM
organizations O
JOIN activities_area A JOIN assoc_organization_activities S ON
O.identifier = S.organization_id AND A.identifier = S.activities_area_id
ORDER BY
O.label
我正在尝试使用 SQLAlchemy:
A = aliased(model.Activities, name='A')
S = aliased(model.AssocOrganizationsActivities, name='S')
O = aliased(model.Organizations, name='O')
organizations_query = session.query(O.id, O.label, A.name) \
.join(A) \
.join(S) \
.filter(O.identifier == S.organization_id) \
.filter(A.identifier == S.activities_area_id) \
.order_by(O.label) \
.all()
但这给了我这个错误:
InvalidRequestError: Could not find a FROM clause to join from. Tried joining to <class 'model.model.Activities'>, but got: Can't find any foreign key relationships between 'organizations' and 'activities_area'.
AssocOrganizationsActivities 表只有 3 个字段:id、作为外键的组织 id 和作为外键的活动区域 id。因此,表组织和活动都由 AssocOrganizationsActivities 链接。
如何让它发挥作用?
【问题讨论】:
标签: python mysql sql join sqlalchemy