You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中MySQL UPDATE参数化请求失败,报错未知列问题排查

问题分析与解决

你的第二个函数存在三个关键错误,导致执行失败:

1. UPDATE语句语法错误

你混淆了INSERT和UPDATE的语法格式,UPDATE语句不需要(Rate) VALUES (%s)这种写法,正确的UPDATE语法结构是UPDATE 表名 SET 列名 = 值 WHERE 条件。

2. WHERE子句未参数化

你依然用f-string拼接Ticker值,导致SQL语句展开后变成Ticker LIKE eurusd——这里的eurusd没有被引号包裹,MySQL会把它识别为列名而非字符串值,因此抛出Unknown column 'eurusd' in 'where clause'错误。

3. 参数传递格式错误

execute方法接收的参数如果是单个值,需要写成带逗号的元组(Rate,),否则Python会把(Rate)解析为单个变量而非元组,导致参数匹配失败。


正确的参数化写法

def writeForexdbother(Ticker, Rate):
    # 所有变量均通过参数化传递,避免语法错误与SQL注入风险
    sql = "UPDATE `mydb`.`param_forex` SET `Rate` = %s WHERE `mydb`.`param_forex`.`Ticker` LIKE %s"
    mycursor.execute(sql, (Rate, Ticker))
    mydb.commit()

补充说明

  • 如果需要模糊匹配(比如使用通配符%),可以在参数中添加,比如Ticker = f"%{Ticker}%",但仍需通过参数化传递,不要直接写在SQL语句里。

内容的提问来源于stack exchange,提问作者Mat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:52:13