भाग
.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
जोड़ सकते हैं
SQLAlchemy द्वारा उत्पन्न SQL को देखने के लिए। अपने प्रश्नों को डीबग करना वास्तव में सुविधाजनक है। या आप संकलित
कर सकते हैं उत्पन्न SQL देखने के लिए एकल क्वेरी।