आप यहां कुछ खतरनाक चीजें कर रहे हैं:
कोई स्ट्रिंग स्वरूपण नहीं (SQL इंजेक्शन)
SQL इंजेक्शन के कारण आपको स्ट्रिंग स्वरूपण का उपयोग नहीं करना चाहिए। जब आपके पास बड़ा SQL कोड होता है तो यह और भी जटिल होता है। तैयार कथन का प्रयोग करें जैसे:
query ="INSERT INTO id(email,passw) VALUES(%s,%s)"args =(email, passw)mycursor.execute(query, args)
डीबी/टेबल को हर समय नया न बनाएं
आपका कोड हर बार विफल होना तय है क्योंकि यह उसी नाम से एक नया डीबी नहीं बना सकता है यदि यह पहले से मौजूद है। टेबल के साथ ही। मैं एक सेटअप स्क्रिप्ट बनाने का सुझाव दूंगा। इसके अलावा, आप डेटाबेस को कनेक्टर में रख सकते हैं और mycursor.execute("USE login;")
का उपयोग करने की आवश्यकता नहीं है।
mydb =mysql.connector.connect(host="localhost", user="root", passwd="", database='login')
प्रतिबद्ध
mysql कनेक्टर डिफ़ॉल्ट रूप से ऑटोकॉमिट नहीं करता है देखें:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
इसलिए फांसी के बाद आपको इसे स्वयं करना होगा।
mydb.commit()
अंत में कोड इस तरह दिखना चाहिए:
आयात करें =इनपुट ("आपका ईमेल:") पासव =इनपुट ("आपका पासवर्ड:") पुष्टि_पास =इनपुट ("पासवर्ड की पुष्टि करें:") यदि पासव ==पुष्टि_पास:प्रिंट ("सफलतापूर्वक पंजीकृत!") क्वेरी ="आईडी में डालें ( ईमेल, पासव) VALUES(%s,%s)" args =(ईमेल, पासव) mycursor.execute(query, args) mydb.commit()else:print("गलत पासवर्ड!")