"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन में SQLite3 का उपयोग करते समय, \"?\" पैरामीटर प्रतिस्थापन का उपयोग करते समय \"आपूर्ति की गई बाइंडिंग की गलत संख्या\" क्यों?

पायथन में SQLite3 का उपयोग करते समय, \"?\" पैरामीटर प्रतिस्थापन का उपयोग करते समय \"आपूर्ति की गई बाइंडिंग की गलत संख्या\" क्यों?

2024-11-07 को प्रकाशित
ब्राउज़ करें:297

When Using SQLite3 in Python, Why \

SQLite Parameter Substitution Conundrum

SQL इंजेक्शन से सुरक्षा के प्रयास में, एक डेवलपर को Python 2.5 के साथ SQLite3 का उपयोग करते समय एक त्रुटि का सामना करना पड़ा। अनुशंसित "?" का प्रयोग करते समय इंजेक्शन को रोकने के लिए पैरामीटर प्रतिस्थापन, उन्हें निम्नलिखित दुविधा का सामना करना पड़ा:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.

यह मुद्दा डेटाबेस के प्रारंभिक निर्माण से उत्पन्न हुआ प्रतीत होता है, जिसमें आठ बाइंडिंग शामिल थे। हालाँकि, प्रत्येक आइटम नाम के लिए कम सुरक्षित "%s" प्रतिस्थापन का उपयोग करने से समस्या हल हो गई।

for item in self.inventory_names:
    self.cursor.execute("SELECT weight FROM Equipment WHERE name = '%s'" % item)
    self.cursor.close()

इस उलझन का समाधान यह समझने में निहित है कि कर्सर.execute() विधि को अपने दूसरे पैरामीटर के रूप में एक अनुक्रम की आवश्यकता होती है। इस उदाहरण में, डेवलपर एक स्ट्रिंग प्रदान कर रहा था जो आठ वर्ण लंबी थी। इसे ठीक करने के लिए, निम्नलिखित कोड संशोधन लागू किया जाना चाहिए:

self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])

इस पैरामीटर के अनुरूप होकर विनिर्देश, समस्या को प्रभावी ढंग से संबोधित किया जा सकता है, जिससे SQLite3 से सुरक्षित और कुशल डेटा पुनर्प्राप्ति की अनुमति मिलती है।

विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729322955 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3