Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अजगर में डीबी फ़ंक्शन कॉल सहित MySQLdb executemany ()

नीचे दी गई विधि आदर्श से बहुत दूर है, लेकिन, दुर्भाग्य से, यह एकमात्र तरीका है जिसे मैं जानता हूं।

विचार यह है कि 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)

हमारे एसक्यूएल के साथ अपेक्षा के अनुरूप काम करता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SphinxSE और RT अनुक्रमणिका से संबंधित कुछ प्रश्न

  2. अद्यतन विवरण पर धीमी MySQL क्वेरी

  3. ClusterControl 1.4.1 की घोषणा - ProxySQL संस्करण

  4. चरित्र सेट और संयोजन का वास्तव में क्या अर्थ है?

  5. मैं कैसे जांच सकता हूं कि जमा की गई तारीख डेटाबेस में दो तिथियों के बीच है?