2014-05-14 63 views
0

总结一下。我有一行数据库(MySQL)中的数据。这些数据在脚本中用于计算一个值。 for循环用于为表格中的每一行计算此值。 问题:存储在变量中的结果意味着必须在同一行的不同列中更新。更新Python中具有不同值的MySQL的每一行

我试图将更新命令包含在for循环中,但出现错误(请参阅下文)。如果我没有在for循环中包含update-command,我只会得到最后一行的结果,但是对于所有行!

脚本:

for row in rows: 
    for col in row: 
      x = map(str.strip,col.lower().split()) 
      st = map(lambda wo: abo.get(wo, 0), x) 
      meant = numpy.meant(st) 
      cur.execute("""UPDATE table_x SET result = %s Where text = %s""",(meant, rows)) 

不幸的是我收到此错误:

Programming Error: (1064, 'You have an error in your SQL syntax; check the manual... 

如何更新与该行的每一个计算值(意味着)列?

+0

请勿删除错误消息。请显示完整的错误信息 – hjpotter92

+0

我对Python自己很新,但是:我认为在你的查询中使用三引号实际上已经注释掉了,所以有效地使用'cur.execute(,(意思是行)) '作为查询命令 – khaverim

+0

@khaverim不,三重引号并不意味着评论。 – hjpotter92

回答

0

当我看到rows是一个列表(或迭代)

,并在查询中,你要绑定与rows占位符(而不是row?)

cur.execute("""UPDATE table_x SET result = %s Where text = %s""",(meant, rows)

这将最可能会创建一个语法错误。

+0

我认为行也可迭代 – hjpotter92

+0

非常感谢您的帮助,我将其更改为行但未成功。 。错误消息:ProgrammingError:(1064,“你的SQL语法有错误;检查对应于你的MySQL服务器版本的手册,在第一行使用'''')')'我使用了行,因为我声明了行= for循环之前的cur.fetchall() – user3469337

相关问题