MySQL python连接器UPDATE错误:检查正确的语法以在%s附近使用。怎么了?

问题描述 投票:0回答:1

这应该相对简单快捷:

当我在python IDE中运行此命令时

mycursor.executemany("UPDATE table42 SET date = %s ", [('2020-05-11')])

由于某种原因,它在字符串占位符(%s)处被完全绊倒。我使用executemany的原因是因为很快该字符串将被使用today.strftime('%Y-%m-%d')的变量替换,因此我需要它更加灵活。

错误如下:mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%s' at line 1

如果有人可以帮助我弄清楚我在做什么错,将不胜感激。

python mysql mariadb mysql-python
1个回答
0
投票

日期字符串后必须有一个逗号,以便该列表是元组的列表(创建元组的逗号,而不是括号)。

mycursor.executemany("UPDATE table42 SET date = %s ", [('2020-05-11',)])

这是因为DB API需要该参数

作为序列或映射提供

(从技术上讲,字符串是一个序列,但是在这里它的长度是错误的。无论如何我认为mysql-connector都会拒绝一个字符串,pymysql会在此IIRC中接受一个字符串。但是将参数设置为元组绝对是最重要的可移植的方式对此进行编码)

© www.soinside.com 2019 - 2024. All rights reserved.