【问题标题】:UPDATE each row of MySQL with different value in Python在 Python 中用不同的值更新 MySQL 的每一行
【发布时间】:2023-03-24 09:24:01
【问题描述】:

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

我尝试在 for 循环中包含更新命令,但出现错误(见下文)。如果我没有在 for 循环中包含更新命令,我只会得到最后一行的结果,但对于所有行!

脚本:

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... 

如何使用该行的每个计算值(均值)更新该列?

【问题讨论】:

  • 不要删除错误信息。请显示完整的错误信息
  • 我自己对 python 还很陌生,但是:我认为在查询中使用三引号实际上可以解决问题,因此有效地使用 cur.execute(,(meant, rows)) 作为查询命令
  • @khaverim 不,三引号不代表评论。
  • @hjpotter92 他们当然是在 Python 中做的。我经常使用它们……但我从中收集到的是,在.execute() 这样的方法中,三引号不会注释掉。谢谢
  • 描述和代码有点混乱。您能否提供一个原始说法的简单示例以及计算后应如何更新该数据?

标签: python mysql for-loop


【解决方案1】:

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

在您的查询中,您将占位符与rows(而不是row?)绑定

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

这很可能会产生语法错误。

【讨论】:

  • 我认为 row 也是可迭代的
  • 非常感谢您的帮助。我将其更改为 row 但没有成功... 错误消息:ProgrammingError: (1064, “您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在 ')' 附近使用的正确语法第 1 行") 我使用了 rows,因为我在 for 循环之前声明了 rows = cur.fetchall()
猜你喜欢
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2014-10-29
相关资源
最近更新 更多