दिलचस्प पोस्ट
jquery fancybox 2.0.3 – fancybox के बाहर क्लिक के नजदीक से रोकें {} और () (घुंघराले ब्रेसिज़ बनाम कोष्ठक का उपयोग कर सेल तत्वों तक पहुंचने के बीच अंतर) मैं वास्तविक कैसे प्राप्त कर सकता हूं। (अतिप्रवाह) की ऊंचाई: छिपा हुआ या अतिप्रवाह: स्क्रॉल करें div? जावास्क्रिप्ट – "यह" का स्वामी UIButton: हिट क्षेत्र को डिफ़ॉल्ट हिट क्षेत्र से बड़ा करना जीआईटी भंडार आकार कम करें एसएसआरएस 2008 आर 2 – एसएसआरएस 2012 – रिपोर्ट वीवर: सफारी और क्रोम में रिपोर्ट रिक्त हैं जावास्क्रिप्ट के साथ स्क्रॉलबार स्थिति कैसे प्राप्त करें? उद्देश्य-सी और स्विफ्ट यूआरएल एन्कोडिंग फ़ाइल या विधानसभा को लोड नहीं किया जा सका 'System.Net.Http, संस्करण = 2.0.0.0 में एमवीसी 4 वेब एपीआई एएसपी.नेट गतिशील रूप से बनाए गए नियंत्रण और पोस्टबैक प्रारंभ और इंस्टांटिएशन के जावा आदेश क्या मुझे <img> या टैग, आदि के अंत में "/" की आवश्यकता है? PHP में एसिंक्रोनस शैल एप सरणियों के साथ, ऐसा क्यों है कि एक == 5 ?

पैरामीटर के रूप में एसक्यूएल क्वेरी में अजगर सूची

मेरे पास एक अजगर सूची है, l का कहना है I

l = [1,5,8] 

मैं सूची के सभी तत्वों के डेटा प्राप्त करने के लिए एक एसक्यूएल क्वेरी लिखना चाहता हूं, कहते हैं

"स्टडन्स से नाम का चयन करें जहां id = | IN सूची में |"

मैं इसे कैसे दूं?

वेब के समाधान से एकत्रित समाधान "पैरामीटर के रूप में एसक्यूएल क्वेरी में अजगर सूची"

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

यहां पैरामीटरयुक्त क्वेरी का उपयोग करने वाला एक संस्करण है जो दोनों के लिए काम करेगा:

 placeholder= '?' # For SQLite. See DBAPI paramstyle. placeholders= ', '.join(placeholder for unused in l) query= 'SELECT name FROM students WHERE id IN (%s)' % placeholders cursor.execute(query, l) 

आप चाहते हैं कि एसक्यूएल है

 select name from studens where id in (1, 5, 8) 

यदि आप अजगर से इस का निर्माण करना चाहते हैं तो आप उपयोग कर सकते हैं

 l = [1, 5, 8] sql_query = 'select name from studens where id in (' + ','.join(map(str, l)) + ')' 

मानचित्र फ़ंक्शन सूची को स्ट्रिंग्स की सूची में बदल देगा, जो कि str.join विधि का उपयोग करके कॉमा द्वारा एक साथ चिपका सकते हैं।

वैकल्पिक रूप से:

 l = [1, 5, 8] sql_query = 'select name from studens where id in (' + ','.join((str(n) for n in l)) + ')' 

अगर आप मानचित्र फ़ंक्शन में जनरेटर अभिव्यक्ति पसंद करते हैं।

अद्यतन: एस। लोटे ने टिप्पणियों में उल्लेख किया है कि पायथन एसक्यूलाइट बाइंडिंग अनुक्रमों का समर्थन नहीं करते हैं। उस स्थिति में, आप चाहते हो सकता है

 select name from studens where id = 1 or id = 5 or id = 8 

द्वारा उत्पन्न

 sql_query = 'select name from studens where ' + ' or '.join(('id = ' + str(n) for n in l)) 

इसे जटिल मत करो, इसके लिए समाधान सरल है।

 l = [1,5,8] l = tuple(l) params = {'l': l} cursor.execute('SELECT * FROM table where id in %(l)s',params) 

यहां छवि विवरण दर्ज करें

मुझे आशा है कि यह मदद की !!!

स्ट्रिंग। अल्पविरामों द्वारा अलग किए गए सूची मूल्यों को शामिल करें, और एक क्वेरी स्ट्रिंग बनाने के लिए प्रारूप ऑपरेटर का उपयोग करें।

 myquery = "select name from studens where id in (%s)" % ",".join(map(str,mylist)) 

(धन्यवाद, ब्लैयर-कॉनराड )

मुझे बॉबंस का जवाब पसंद है:

 placeholder= '?' # For SQLite. See DBAPI paramstyle. placeholders= ', '.join(placeholder for unused in l) query= 'SELECT name FROM students WHERE id IN (%s)' % placeholders cursor.execute(query, l) 

लेकिन मैंने यह देखा:

 placeholders= ', '.join(placeholder for unused in l) 

इसके साथ बदला जा सकता है:

 placeholders= ', '.join(placeholder*len(l)) 

मुझे यह अधिक सीधा लगता है अगर कम चालाक और कम सामान्य यहां l की लंबाई होना आवश्यक है (यानी किसी वस्तु को संदर्भित करें जो __len__ विधि परिभाषित करता है), जो कि समस्या नहीं होनी चाहिए। लेकिन प्लेसहोल्डर को एक भी अक्षर होना चाहिए। बहु-वर्ण प्लेसहोल्डर का समर्थन करने के लिए:

 placeholders= ', '.join([placeholder]*len(l)) 

@ आरोपित उत्तर के समाधान, क्योंकि यह एक तत्व ट्यूपल के साथ तोड़ दिया गया, चूंकि (1,) मान्य SQL नहीं है:

 >>> random_ids = [1234,123,54,56,57,58,78,91] >>> cursor.execute("create table test (id)") >>> for item in random_ids: cursor.execute("insert into test values (%d)" % item) >>> sublist = [56,57,58] >>> cursor.execute("select id from test where id in %s" % str(tuple(sublist)).replace(',)',')')) >>> a = cursor.fetchall() >>> a [(56,), (57,), (58,)] 

एसक्यूएल स्ट्रिंग के लिए अन्य समाधान:

 cursor.execute("select id from test where id in (%s)" % ('"'+'", "'.join(l)+'"')) 

उदाहरण के लिए, यदि आप SQL क्वेरी चाहते हैं:

 select name from studens where id in (1, 5, 8) 

व्हाट अबाउट:

 my_list = [1, 5, 8] cur.execute("select name from studens where id in %s" % repr(my_list).replace('[','(').replace(']',')') )