在Python中使用不同的值更新MySQL的每一行
总而言之。我在数据库MySQL的一行中有数据。此数据在脚本中用于计算值。for循环用于为表中的每一行计算此值。 问题是:存储在变量中的结果意味着必须在同一行的不同列中更新 我试图在for循环中包含update命令,但出现了一个错误,请参见下文。如果我没有在for循环中包含update命令,我只会得到最后一行的结果,但所有行都是如此 剧本:在Python中使用不同的值更新MySQL的每一行,python,mysql,for-loop,Python,Mysql,For Loop,总而言之。我在数据库MySQL的一行中有数据。此数据在脚本中用于计算值。for循环用于为表中的每一行计算此值。 问题是:存储在变量中的结果意味着必须在同一行的不同列中更新 我试图在for循环中包含update命令,但出现了一个错误,请参见下文。如果我没有在for循环中包含update命令,我只会得到最后一行的结果,但所有行都是如此 剧本: for row in rows: for col in row: x = map(str.strip,col.lower().
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...
如何使用该行的每个计算值更新该列?因为我看到行是列表或iterable
在查询中,您将占位符绑定为行而不是行
cur.executeUPDATE表_x SET result=%s,其中text=%s,means,行
这很可能会产生语法错误。不要删除错误消息。请显示整个错误消息我本人对python非常陌生,但是:我认为在查询中使用三重引号实际上会将其注释掉,因此有效地使用cur.execute,也就是说,行作为查询command@khaverim不,三重引号并不意味着注释。@hjpotter92它们在Python中肯定有注释。我经常使用它们…但我从中得到的信息是,在一个方法中,比如.execute三重引号不会注释掉任何东西。谢谢描述和代码有点混乱。你能提供一个简单的例子来说明原始数据,以及在计算后数据应该如何更新吗?我认为row也是可行的,非常感谢你的帮助。我把它改成了行,但没有成功。。。错误消息:ProgrammingError:1064,您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行附近使用的正确语法。我使用了rows,因为我在for循环之前声明了rows=cur.fetchall