gpt4 book ai didi

python - 从 python 使用 ON DUPLICATE KEY UPDATE

转载 作者:行者123 更新时间:2023-11-29 07:18:58 26 4
gpt4 key购买 nike

我正在尝试使用此代码更新 mySQL 上的表,但我在更新部分遇到错误

table_name = 'my_table'
sql_select_Query = """
INSERT {0} (age, city, gender,UniqueId)
VALUES ({1},{2},{3},{4})
ON DUPLICATE KEY UPDATE
age=VALUES(age,city=VALUES(city),gender=VALUES(gender),height=VALUES(height)
""".format(table_name, '877','2','1','2898989')

cursor = mySQLconnection .cursor()
cursor.execute(sql_select_Query)
mySQLconnection.commit()

例如,要更新我得到的城市:

Unknow columns '877'

因此它似乎将该值作为列名并在 my_table 中搜索 then。

最佳答案

在 Python 中使用参数的正确方法是在 execute() 调用中传递值,而不是将值插入到 SQL 查询中。

除了你的情况下的表名之类的标识符。

sql_select_Query = """
INSERT `{0}` (age, city, gender, UniqueId)
VALUES (%s, %s, %s, %s)
ON DUPLICATE KEY UPDATE
age=VALUES(age), city=VALUES(city), gender=VALUES(gender)
""".format(table_name)

cursor.execute(sql_select_Query, ('877', '2', '1', '2898989'))

另见 MySQL parameterized queries

您忘记了 VALUES(age 之后的 )。也许这只是您在将问题转录到 Stack Overflow 时打错了字。我已经在上面的示例中修复了它.

您的 INSERT 语句设置了 height 列,但它不是您插入的元组的一部分。我在上面的例子中删除了它。如果你想在 UPDATE 子句中使用 height,那么你需要将它包含在元组中并在参数中传递一个值。

我还在表名周围加上反引号,以防表名是保留关键字或包含空格或其他内容。

关于python - 从 python 使用 ON DUPLICATE KEY UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57403200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com