दिलचस्प पोस्ट
$ (इस) और event.target के बीच का अंतर? सीएसएस के साथ 1, 2, 3, … के बजाय 1, 1, 1.2, 1.3 (जैसा दिखता है) सूची का उत्पादन कर सकते हैं? SQL सर्वर एक्सप्रेस की सीमाएं textarea के लिए val () बनाम टेक्स्ट () एंड्रॉइड जावा और फोनगैप जावास्क्रिप्ट के बीच संचार? प्रीफलाइट अनुरोध के उत्तर में एक्सेस कंट्रोल चेक पास नहीं होता है पूर्णांक प्रभाग का व्यवहार क्या है? जब कोई बच्चा एंकर पर क्लिक किया जाता है तो मैं फ़ायरिंग से किसी पैरेंट के ऑनक्लिक ईवेंट को कैसे रोकूं? Yyyy-mm-dd को जावास्क्रिप्ट स्वरूपित करें क्या मैं एक स्तंभ में एकाधिक पंक्तियों को कम कर सकता हूं? मैं Node.js अनुप्रयोगों को डिबग कैसे कर सकता हूँ? कंसोल (। Com) () सतर्क () से बेहतर क्यों माना जाता है? आपको कंप्यूटर की कुल रैम की संख्या कैसे मिलती है? व्यवहार विषय बनाम अवलोकन योग्य? क्या iPhone पर छूने का एक तरीका है?

SQLite पैरामीटर प्रतिस्थापन समस्या

पायथन 2.5 के साथ SQLite3 का उपयोग करना, मैं एक सूची के माध्यम से पुनरावृत्त करने की कोशिश कर रहा हूं और आइटम के नाम के आधार पर डेटाबेस से किसी आइटम का वजन खींच सकता हूं।

मैंने "?" का उपयोग करने की कोशिश की पैरामीटर प्रतिस्थापन एसईएल इंजेक्शन को रोकने के लिए सुझाव दिया है लेकिन यह काम नहीं करता है। उदाहरण के लिए, जब मैं उपयोग करता हूं:

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

मुझे त्रुटि मिलती है:

sqlite3। प्रोग्रामिंग त्रुटि: बाइनिंग की गलत संख्या की आपूर्ति की। वर्तमान बयान 1 का उपयोग करता है, और वहां 8 आपूर्ति की जाती है।

मेरा मानना ​​है कि यह किसी तरह से डेटाबेस के प्रारंभिक निर्माण के कारण होता है; मैंने जो मॉड्यूल बनाया था, वास्तव में डीबी में 8 बाइंडिंग होते हैं।

 cursor.execute("""CREATE TABLE Equipment (id INTEGER PRIMARY KEY, name TEXT, price INTEGER, weight REAL, info TEXT, ammo_cap INTEGER, availability_west TEXT, availability_east TEXT)""") 

हालांकि, जब मैं प्रत्येक आइटम नाम के लिए कम-सुरक्षित "% s" प्रतिस्थापन का उपयोग करता हूं, तो यह ठीक काम करता है। इस तरह:

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

मुझे समझ में नहीं आ रहा है कि क्यों यह सोचता है कि मेरे पास 8 बंधन हैं जब मैं केवल एक फोन कर रहा हूं। मेरे द्वारा यह कैसे किया जा सकता है?

वेब के समाधान से एकत्रित समाधान "SQLite पैरामीटर प्रतिस्थापन समस्या"

Cursor.execute() विधि को दूसरी पैरामीटर के रूप में अनुक्रम की उम्मीद है। आप एक स्ट्रिंग की आपूर्ति कर रहे हैं जो 8 अक्षर लंबा हो।

इसके बजाय निम्न फ़ॉर्म का प्रयोग करें:

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

पायथन लायब्रेरी संदर्भ 13.13.3: sqlite3 कर्सर ऑब्जेक्ट्स ।

मैंने आधे दिन बिताया है यह समझने की कोशिश की कि ऐसा क्यों मुझे एक त्रुटि देगी:

 cursor.execute("SELECT * from ? WHERE name = ?", (table_name, name)) 

केवल यह पता लगाने के लिए कि टेबल के नामों को पैरामीटिज्ड नहीं किया जा सकता है । आशा है कि यह अन्य लोगों को कुछ समय बचाने में मदद करेगा।

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

 >>> ('jason') 'jason' >>> ('jason',) ('jason',) 

पहला उदाहरण इसके बजाय एक स्ट्रिंग का मूल्यांकन करता है; इसलिए एक मूल्यवान ट्यूपल का प्रतिनिधित्व करने का सही तरीका दूसरे मूल्यांकन में है। किसी भी तरह, नीचे दिए गए कोड को आपकी त्रुटि ठीक करने के लिए

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

इसके अलावा cursor.execute को भी स्ट्रिंग के रूप में मान तर्कों को देना, (जो कि आप कर रहे हैं) उदाहरण में पहले मूल्यांकन में परिणाम और आपको मिलने वाले त्रुटि में परिणाम।

क्या आपने यह कोशिश की है? :

 for item in self.inventory_names: t = (item,) self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", t) self.cursor.close() 

cursor.execute () दूसरे पैरामीटर के रूप में अनुक्रम (सूची, ट्यूपल) की अपेक्षा करता है (-> डीडीएए)

उद्धरण (यह है कि पैरों का क्या अर्थ है?) क्या? मेरे साथ माता-पिता मेरे लिए काम करने लगते हैं मैं कोशिश कर रहा था (सचमुच) '?' लेकिन मुझे मिल रहा था

प्रोग्रामिंग त्रुटि: बाइनिंग की गलत संख्या की आपूर्ति। वर्तमान कथन 0 का उपयोग करता है, और वहां 1 की आपूर्ति की जाती है।

जब मैंने किया:

वास्तविकता से तथ्य का चयन करें जहां की कुंजी (?)

के बजाय:

तथ्यों से तथ्यों से कहां की '?'

इसने काम कर दिया।

यह कुछ अजगर 2.6 बात है?

वस्तुओं के प्रत्येक तत्व को ट्यूपल होना चाहिए नामों को मानते हुए ऐसा कुछ दिखता है:

 names = ['Joe', 'Bob', 'Mary'] 

आपको निम्न कार्य करना चाहिए:

 for item in self.inventory_names: self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", (item, )) 

(आइटम,) का उपयोग करके आप इसे स्ट्रिंग के बजाय एक ट्यूपल बना रहे हैं।

प्रयत्न

 execute("select fact from factoids where key like ?", "%%s%" % val) 

तुम कुछ भी लपेटो नहीं ? बिल्कुल, पायथन एसक्यूलाइट इसे सही ढंग से एक उद्धृत इकाई में परिवर्तित कर देगा।