【问题标题】:Python Mysql How to updating columns from a list/variable in a efficient way?Python Mysql 如何以有效的方式更新列表/变量中的列?
【发布时间】:2020-12-20 21:09:40
【问题描述】:

我也是 python 和 MySQL 的新手。我正在尝试使用 MySQL 构建一个足球数据库。在创建了两个表的数据库中,我对它们进行了基本的更新操作,一次更新一行或几行,但我希望整个过程自动化,尤其是从变量或列表进行更新。我有一张桌子,我记录了过去的比赛(到目前为止的赛季),还有一张桌子,我想根据他们迄今为止在赛季桌子上的表现自动创建实际的足球桌。

my_sq8 = "UPDATE bundesligatabella_2020_2021 SET F = %s, A = %s WHERE Team = '%s' VALUES (%s, %s, 
%s)"
val = [
(9, 5, "Bayern München"),
(8, 7, "Augsburg"),
(4, 3, "Bielefeld"),
]
my_cursor.executemany(my_sq8, val)
mydb.commit()

这是我第一次尝试只有 3 支球队,我想更新特定球队的进球数,但总是出错。有人可以帮我解决这个问题吗?

在我计划的功能中,我在一个更大的列表中执行所有算术操作,并从那里针对团队进行更新。也许我错了,如果您有想法,请告诉我,更快或更好地更新值,而不是为所有统计数据和所有团队制作变量。

这是我上面代码的错误信息:

Traceback(最近一次调用最后一次): 文件 \python\database.py",第 141 行,在 my_cursor.executemany(my_sq8, val) 文件“\Python\Python39\lib\site-packages\mysql\connector\cursor.py”,第 675 行,在 executemany self.execute(操作,参数) 文件“C:\Python\Python39\lib\site-packages\mysql\connector\cursor.py”,第 558 行,在执行中 stmt = RE_PY_PARAM.sub(psub, stmt) 调用中的文件“C:\Python\Python39\lib\site-packages\mysql\connector\cursor.py”,第 85 行 引发错误。ProgrammingError( mysql.connector.errors.ProgrammingError: SQL 语句参数不足

【问题讨论】:

  • 如果您在问题中包含完整的错误和回溯,我们将能够提供更好的帮助。
  • 该值...您的更新 sql 的一部分不应该存在。
  • "In the feature..." 那么最好将bundesligatabella_2020_2021重命名为bundesligatabella,并添加一个类似Fussballspielsaison的列,(或者只是匹配的日期播放)

标签: python mysql


【解决方案1】:

INSERTUPDATE 语句在您的情况下混合使用。应删除 VALUES 关键字。而错误的直接来源是语句中有6 参数,而应该有3。顺便说一句,该变量可能会在val 列表中被引用,您可以去掉在sql 语句中包裹最后一个变量(%s) 的单引号。

因此,您可以修复语法,例如

my_sq8 = "UPDATE bundesligatabella_2020_2021 SET F = %s, A = %s WHERE Team = %s"
val = [
    (9, 5, 'Bayern München'),
    (8, 7, 'Augsburg'),
    (4, 3, 'Bielefeld'),
    ]
my_cursor.executemany(my_sq8, val)
mydb.commit()

【讨论】:

  • 非常感谢,我坚持了好几个小时 :)
猜你喜欢
  • 1970-01-01
  • 2018-07-04
  • 2020-12-11
  • 2020-09-17
  • 2019-04-06
  • 1970-01-01
  • 2012-05-19
  • 2023-02-11
  • 1970-01-01
相关资源
最近更新 更多