2010-06-23 21 views
27

मैं नीचे के रूप में पायथन के SQLite पुस्तकालय के साथ एक प्रश्न की तरह parametrized उपयोग करने का प्रयास कर रहा हूँ के साथ अजगर SQLite पैरामीटर प्रतिस्थापन:की तरह में वाइल्डकार्ड

self.cursor.execute("select string from stringtable where string like '%?%' and type = ?", (searchstr,type)) 

लेकिन? अंदर वाइल्डकार्ड की मुझे इस त्रुटि के साथ छोड़ने का मूल्यांकन नहीं किया जा रहा है:

like '%:searchstr%' और होने {"searchstr":searchstr...

लेकिन जब सूची में:

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

मैं भी के द्वारा क्वेरी का टैग किया गया संस्करण का उपयोग करने की कोशिश की मैं करता हूं कि क्वेरी चलती है लेकिन "like '%a%'"... मैन्युअल रूप से

किसी भी सुझाव के लिए मैन्युअल रूप से डालने के बावजूद कोई परिणाम नहीं देता है?

उत्तर

53

उद्धरण ? या :name को किसी स्थान-धारक के रूप में लेने से बचाते हैं - उन्हें शाब्दिक रूप से लिया जाता है। आपको जिस स्ट्रिंग को पारित किया जा रहा है, उसके आस-पास प्रतिशत संकेतों को रखने की आवश्यकता है, और उद्धरण के बिना सादे प्लेसहोल्डर का उपयोग करें। यानी .:

self.cursor.execute(
    "select string from stringtable where string like ? and type = ?", 
    ('%'+searchstr+'%', type)) 

नोट है कि न तो ? उद्धरण में है - और कि वास्तव में के लिए उन्हें प्लेसहोल्डर के रूप में लिया जाना चाहिए के रूप में यह होना चाहिए है।

+0

आपको बहुत बहुत धन्यवाद! यह तय है! – atcuno

+0

@ हंटलर, हमेशा मदद करने में प्रसन्नता! –

+0

क्या पाइथन में डबल कोट्स में चर के PHP-जैसे पार्सिंग है? जैसे PHP में '$ var" 'उद्धरणों में संलग्न' $ var' के मान को पार्स करेगा। –

संबंधित मुद्दे