2012-05-09 2 views
1
import MySQLdb 
import csv 
import sys 
db = MySQLdb.connect("host","username","password","dbname") 
c = db.cursor() 
posfile = 'C:/Users/name/Desktop/textfile.txt' 
csv_data_pos = csv.reader(open(posfile, 'rb')) 
count_pos = 0 
for row_pos in csv_data_pos: 
    count_pos = count_pos + 1 
    pos_file_update = "UPDATE Sentence SET POS_score = %s WHERE Id = %s" 
    c.execute(pos_file_update, (row_pos, count_pos)) 

Я пытаюсь обновить row_pos в таблицу, но я получил ошибкуОшибка при таблице обновления с помощью MySQLDb

"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 ') WHERE Id = 1' at line 1"")"   

ли я что-то пропустил в кодах? Любой совет?

ответ

2

В этом контексте row_pos представляет собой массив, а не скалярное значение. Если вы хотите передать определенное значение из этого массива, используйте индекс, например [0], чтобы получить его.

# row_pos is an array representing one row of the 2d array csv_data_pos 
# as returned by the csv.reader() call 
for row_pos in csv_data_pos: 
    count_pos = count_pos + 1 
    pos_file_update = "UPDATE Sentence SET POS_score = %s WHERE Id = %s" 
    # If there is a specific value from the row_pos array, use its array index 
    c.execute(pos_file_update, (row_pos[0], count_pos))