Част
.query(Workflow.user_id, func.count(Log.id))
добавя както Workflow
и Log
към вашето запитване. Първият модел е маркиран като основна таблица, а други са маркирани като вторични. Ако няма извиквания към .join()
след това първичните и вторичните таблици ще бъдат добавени към FROM
клауза. Ако има извиквания към .join()
ще премести таблицата, която получава, към JOIN
клауза. Важното тук е, че .join()
може да се приложи само към вторичната таблица.
Проблемът е, че вашето обаждане до
.join(Workflow, Workflow.id == Log.workflow_id)
опитва да маркира основната таблица като присъединена. За да коригирате проблема, трябва да се присъедините към вторична таблица:
.join(Log, Workflow.id == Log.workflow_id)
Можете да добавите echo=True
за да видите SQL, генериран от SQLAlchemy. Наистина е удобно да отстранявате грешки в заявките си. Или можете да компилирате
единична заявка, за да видите генерирания SQL.