sql >> Databáze >  >> RDS >> PostgreSQL

Dotaz SQLAlchemy zobrazuje chybu Nelze připojit tabulku/volitelné „pracovní postupy“ k sobě

Část

.query(Workflow.user_id, func.count(Log.id))

přidá oba Workflow a Log na váš dotaz. První model je označen jako primární stůl a ostatní jsou označeny jako sekundární. Pokud neprobíhá žádná volání .join() poté budou primární i sekundární tabulky přidány do FROM doložka. Pokud existují volání .join() přesune přijatou tabulku do JOIN doložka. Zde je důležité, že .join() lze použít pouze na sekundární tabulku.

Problém je v tom, že vaše volání na

.join(Workflow, Workflow.id == Log.workflow_id)

pokusí se označit primární tabulku jako spojenou. Chcete-li problém vyřešit, musíte se připojit k sekundárnímu stolu:

.join(Log, Workflow.id == Log.workflow_id)

Můžete přidat echo=True zobrazit SQL generované SQLAlchemy. Je opravdu pohodlné ladit vaše dotazy. Nebo můžete kompilovat jeden dotaz pro zobrazení vygenerovaného SQL.



  1. json_encode nic nevrací

  2. Co to znamená, když je MySQL ve stavu Odesílání dat?

  3. Volání funkce PHP s tlačítkem HTML

  4. Úvahy o zabezpečení serveru SQL