मैं अजगर का उपयोग कर mysql में csv फ़ाइल सम्मिलित करने का प्रयास कर रहा हूँ। मैं MySQL के लिए सिर्फ नया प्रोग्रामर हूं, इसलिए मुझे यकीन नहीं है कि समस्या क्या है। यहाँ मेरा कोड है:

file = csv.reader(file('20184329:2143.csv'))
for row in file:
    sql_insert_table = ("""INSERT INTO STAGING(ADRESSE_1600 ,
                        ADRESSE_1601, ADRESSE_1602, ADRESSE_1603)
                        VALUES ('%s', '%d', '%d', '%s')""", row)
    cursor.execute(sql_insert_table)

और यहाँ समस्या है:

Traceback (most recent call last):
  File "python_loaddata.py", line 22, in <module>
    cursor.execute(sql_insert_table)
  File "/usr/lib/python2.7/site-packages/MySQLdb/cursors.py", line 161, in execute
    self.errorhandler(self, TypeError, m)
  File "/usr/lib/python2.7/site-packages/MySQLdb/connections.py", line 35, in defaulterrorhandler
    raise errorclass, errorvalue
TypeError: must be string or read-only buffer, not tuple
0
totoro 31 मार्च 2018, 07:33

1 उत्तर

MySQL निष्पादन विधि के अनुसार डॉक्स, पहला तर्क SQL स्ट्रिंग होना चाहिए।

आप क्वेरी और टुपल के साथ एक टुपल पास कर रहे हैं।

तो बस इसमें बदलें:

file = csv.reader(file('20184329:2143.csv'))
sql_insert_table = """INSERT INTO STAGING(ADRESSE_1600 ,
                      ADRESSE_1601, ADRESSE_1602, ADRESSE_1603)
                      VALUES ('%s', '%d', '%d', '%s')"""
for row in file:
    cursor.execute(sql_insert_table, params=row)

ध्यान दें कि आप पंक्ति को वैसे ही पास कर सकते हैं क्योंकि csv.reader स्ट्रिंग्स की एक सूची देता है।

0
Adriano Martins 31 मार्च 2018, 05:22