2014-05-14 102 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

相關問題