Del
.query(Workflow.user_id, func.count(Log.id))
lägger till både Workflow
och Log
till din fråga. Den första modellen är markerad som primär tabell och andra är markerade som sekundär. Om det inte finns några anrop till .join()
efteråt kommer både primära och sekundära tabeller att läggas till i FROM
klausul. Om det finns anrop till .join()
den kommer att flytta tabellen den tar emot till JOIN
klausul. Det viktiga här är att .join()
kan endast tillämpas på den sekundära tabellen.
Problemet är att ditt samtal till
.join(Workflow, Workflow.id == Log.workflow_id)
försöker markera primär tabell som sammanfogad. För att åtgärda problemet måste du gå med i den sekundära tabellen:
.join(Log, Workflow.id == Log.workflow_id)
Du kan lägga till echo=True
för att se SQL genererad av SQLAlchemy. Det är verkligen bekvämt att felsöka dina frågor. Eller så kan du kompilera
enda fråga för att se genererad SQL.