नीचे दी गई विधि आदर्श से बहुत दूर है, लेकिन, दुर्भाग्य से, यह एकमात्र तरीका है जिसे मैं जानता हूं।
विचार यह है कि connection.literal
. का उपयोग करके मैन्युअल रूप से SQL का निर्माण किया जाए आपके लिए तर्कों से बचने के लिए:
cursor=connection.cursor()
args=[(1,'foo'),(2,'bar')]
sql=('INSERT INTO `foo` (`fooid`,`data`,`time_added`) VALUES '
+','.join(
['(%s,%s,NOW())'%connection.literal(arg)
for arg in args]))
cursor.execute(sql)
यह भयानक लग रहा है, और आपकी त्वचा को क्रॉल कर सकता है, लेकिन यदि आप हुड के नीचे (/usr/lib/pymodules/python2.6/MySQLdb/cursors.py में) देखते हैं कि MySQLdb cursors.executemany<में क्या कर रहा है। /कोड> , मुझे लगता है कि यह उसी तर्ज पर है जो वह फ़ंक्शन कर रहा है, रेगेक्स के कारण मिक्सअप को घटाएं
cursors.insert_values
नेस्टेड कोष्ठकों को सही ढंग से पार्स नहीं करना। (ईक!)
मैंने अभी-अभी oursql इंस्टॉल किया है , MySQLdb का एक विकल्प, और मुझे यह बताते हुए खुशी हो रही है कि
sql='INSERT INTO `foo` (`fooid`,`data`,`time_added`) VALUES (?,?,NOW())'
cursor.executemany(sql,args)
हमारे एसक्यूएल के साथ अपेक्षा के अनुरूप काम करता है।