2013-09-24 16 views
1

У меня есть текстовый файл 304 МБ, который содержит запятые (,) разделенные значения в каждой строке, я читаю файл строки за строкой и вставляя значения, используя для цикла, но я продолжаю получать эту ошибку после Вставляются 21 ряд. здесь кодВставка значения в таблицу mysql с использованием для цикла python

import MySQLdb 

myfile = open('/home/vaibhav/Desktop/question1.csv', 'r') 

db = MySQLdb.connect(host="localhost", 
       user="root", 
        passwd="admin", 
        db="question1agg") 

for line in myfile: 

    my_line_list = line.split(',') 
    string = '' 
    for value in my_line_list: 
      string = string + "'" + value + "'," 
      query_string = string[:-1] 
     final_query = "insert into question1 values"+"("+query_string+");" 
     cur = db.cursor() 
     cur.execute(final_query) 
     db.commit() 
db.close() 

И это ошибка, я получаю

Traceback (most recent call last): 
File "da.py", line 19, in <module> 
    cur.execute(final_query) 
    File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in  defaulterrorhandler 
    raise errorclass, errorvalue 
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's Solids','Men','NULL','Solid','/Products/Legwear','/Products/Legwear/AmericanEs' at line 1") 

ответ

0

Похоже, что на одной из ваших линий есть апостроф, который запутывает MySQL. Из сообщения об ошибке -

's Solids','Men','NULL','Solid' 

вашей проблеме, и это решение объясняется хорошо здесь - Python MySQL escape special characters

0

Это выглядит как один из ваших ценностей есть апостроф в нем. Чтобы избежать этой ошибки, вам нужно избежать апострофа.

Например, у вас есть значение, как это:

That's right! 

Так что ваша вставка выглядит следующим образом:

insert into question1 values('value1','That's right!','value2'); 

Вы должны избежать апостроф, чтобы сделать вставку, как это:

insert into question1 values('value1','That''s right!','value2'); 
Смежные вопросы