Teil
.query(Workflow.user_id, func.count(Log.id))
fügt sowohl Workflow
hinzu und Log
zu deiner Anfrage. Das erste Modell wird als primärer Tisch markiert und andere werden als sekundär markiert. Wenn es keine Aufrufe von .join()
gibt danach werden sowohl primäre als auch sekundäre Tabellen zum FROM
hinzugefügt Klausel. Bei Aufrufen von .join()
Es verschiebt die empfangene Tabelle in den JOIN
Klausel. Wichtig ist hier, dass .join()
kann nur auf die sekundäre Tabelle angewendet werden.
Das Problem ist, dass Ihr Aufruf an
.join(Workflow, Workflow.id == Log.workflow_id)
versucht, die primäre Tabelle als verbunden zu markieren. Um das Problem zu beheben, müssen Sie der sekundären Tabelle beitreten:
.join(Log, Workflow.id == Log.workflow_id)
Sie können echo=True
hinzufügen
, um von SQLAlchemy generiertes SQL anzuzeigen. Es ist wirklich praktisch, Ihre Abfragen zu debuggen. Oder Sie können kompilieren
einzelne Abfrage, um generiertes SQL zu sehen.