使用MySQLdb更新表时出错

时间:2012-05-09 16:23:44

标签: python

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 更新到表中但我收到了错误

"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"")"          

我是否遗漏了代码中的内容?有什么建议?

1 个答案:

答案 0 :(得分: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))