नहीं करें SQL मानों को प्रक्षेपित करने के लिए स्ट्रिंग स्वरूपण का उपयोग करें। SQL पैरामीटर का उपयोग करें:
SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))
यहाँ %s
एसक्यूएल पैरामीटर हैं; डेटाबेस तब आपके लिए मूल्यों से बचने का ख्याल रखता है ('कर्सर.एक्सक्यूट' के दूसरे तर्क के रूप में पारित)।
वास्तव में आपको किस सिंटैक्स का उपयोग करने की आवश्यकता है यह आपके डेटाबेस एडेप्टर पर निर्भर करता है; कुछ लोग %s
का उपयोग करते हैं , अन्य लोग ?
. का उपयोग करते हैं प्लेसहोल्डर्स के लिए।
आप अन्यथा इन मापदंडों के लिए, सूची की तरह, पायथन कंटेनरों का उपयोग नहीं कर सकते। आपको इसे पहले एक स्ट्रिंग प्रारूप में क्रमबद्ध करना होगा; आप उसके लिए JSON का उपयोग कर सकते हैं, लेकिन फिर आपको डेटाबेस को क्वेरी करते समय JSON को एक पायथन स्ट्रिंग में फिर से डिकोड करना याद रखना होगा। दूसरे प्रश्न के उत्तर ने यही बताने की कोशिश की।
उदाहरण के लिए, यदि var4
सूची है, जिसका आप उपयोग कर सकते हैं:
cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))