SQLite पैरामीटर्स प्रतिस्थापन समस्या
पायथन 2.5 के साथ SQLite3 का उपयोग करते समय, एक सूची के माध्यम से पुनरावृत्त करने और डेटा पुनर्प्राप्त करने का प्रयास करते समय एक सामान्य समस्या उत्पन्न होती है एक डेटाबेस. सुझाए गए "?" का उपयोग करना SQL इंजेक्शन के लिए एहतियात के तौर पर पैरामीटर के परिणामस्वरूप अक्सर बाइंडिंग की संख्या के संबंध में त्रुटि होती है।
जांच करने पर, यह स्पष्ट हो जाता है कि त्रुटि डेटाबेस तालिका के प्रारंभिक निर्माण से उत्पन्न हुई है। निर्माण विवरण, जैसे:
CREATE TABLE Equipment (id INTEGER PRIMARY KEY, name TEXT, price INTEGER, weight REAL, info TEXT, ammo_cap INTEGER, availability_west TEXT, availability_east TEXT);
आठ बाइंडिंग पंजीकृत करता है, भले ही क्वेरी के दौरान केवल एक पैरामीटर का उपयोग किया जा रहा हो।
इस समस्या को हल करने के लिए, कर्सर.execute() विधि के दूसरे पैरामीटर के रूप में अनुक्रम का उपयोग करने के लिए कोड को संशोधित करें:
self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])
यह संशोधन सुनिश्चित करता है कि विधि को एक अनुक्रम प्रदान किया जाता है, जो समाधान करता है बाइंडिंग की संख्या पर भ्रम।
SQLite3 कर्सर ऑब्जेक्ट दस्तावेज़ का संदर्भ इस विषय पर आगे मार्गदर्शन प्रदान कर सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3