Del
.query(Workflow.user_id, func.count(Log.id))
tilføjer både Workflow
og Log
til din forespørgsel. Den første model er markeret som primær tabel og andre er markeret som sekundær. Hvis der ikke er nogen opkald til .join()
bagefter vil både primære og sekundære tabeller blive tilføjet til FROM
klausul. Hvis der er kald til .join()
den vil flytte tabellen den modtager til JOIN
klausul. Det vigtige her er, at .join()
kan kun anvendes på den sekundære tabel.
Problemet er, at dit opkald til
.join(Workflow, Workflow.id == Log.workflow_id)
forsøger at markere den primære tabel som sammenføjet. For at løse problemet skal du tilslutte dig den sekundære tabel:
.join(Log, Workflow.id == Log.workflow_id)
Du kan tilføje echo=True
for at se SQL genereret af SQLAlchemy. Det er virkelig praktisk at fejlsøge dine forespørgsler. Eller du kan kompilere
enkelt forespørgsel for at se genereret SQL.