यह should be:
cursor.execute ("""
UPDATE tblTableName
SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))
आप भी यह बुनियादी स्ट्रिंग परिवर्तन के साथ कर सकते हैं,
cursor.execute ("UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server='%s' " % (Year, Month, Day, Hour, Minute, ServerID))
लेकिन this way is discouraged because it leaves you open for SQL Injection। चूंकि यह सही तरीके सेटीएम करने के लिए इतना आसान (और समान) है। यह सही ढंग से करो।
केवल एक चीज आपको सावधान रहना चाहिए, यह है कि कुछ डेटाबेस बैकएंड स्ट्रिंग प्रतिस्थापन के लिए समान सम्मेलन का पालन नहीं करते हैं (SQLite दिमाग में आता है)।
cursor.execute ("""
UPDATE tblTableName
SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))
अधिक के लिए, read the documentation:
पाओलो का जवाब बेहतर है। http://stackoverflow.com/questions/1307378/python-mysql-update-statement/1307413#1307413 – voyager
लेकिन यह प्रत्येक बैकएंड के साथ काम करेगा। यह संस्करण इनपुट पर कोई सत्यापन नहीं करता है, जबकि पाओलो का तरीका वैरिएबल सामग्री से बचने के लिए सुनिश्चित करेगा। – voyager
ऐसा करें * नहीं * इसे इस तरह से करें। आप स्वयं को एसक्यूएल इंजेक्शन हमलों के लिए खुले छोड़ देते हैं। पाउलो का सही जवाब है, क्योंकि यह सुनिश्चित करता है कि डीबी को पास करने से पहले मूल्य ठीक से बच निकले हैं। –