आप केवल conn . परिभाषित करते हैं और cursor अगर ब्लॉक के अंदर फॉर्म वैल्यू की जांच कर रहा है। यदि ब्लॉक दर्ज नहीं किया गया है, तो वे परिभाषित नहीं हैं, लेकिन फिर भी आप उन्हें वैसे भी बंद करने के लिए संदर्भित करने का प्रयास करते हैं। आपको केवल close पर कॉल करना चाहिए दोनों पर यदि आपने उन्हें परिभाषित किया है। या तो स्थानांतरित करें conn = और cursor = if ब्लॉक से पहले, या close . को स्थानांतरित करें ब्लॉक के भीतर कॉल करता है।
हालांकि, बड़ी समस्या यह है कि आप फ्लास्क-माईएसक्यूएलडीबी का उपयोग करने के तरीके को गलत समझ रहे हैं/अधिक जटिल कर रहे हैं। यह स्वचालित रूप से कनेक्शन बनाएगा और अनुरोध पूरा होने पर इसे बंद कर देगा, जो कर्सर को भी बंद कर देता है। दस्तावेज़ में बताए अनुसार बस एक्सटेंशन का उपयोग करें ।
...
cur = mysql.connection.cursor()
cur.callproc('sp_createUser', (name, email, hashed_password))
data = cur.fetchall()
...