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

Python中如何正确编写执行UPDATE SQL更新查询语句

问题原因

你手动拼接生成的最终SQL语句为UPDATE users SET message = hello WHERE UserId=13,字符串值hello两侧缺少SQL语法要求的单引号包裹,数据库解析时会把无引号的hello识别为列名,因此触发"undefined column name 'hello'"报错。
注意:直接手动拼接SQL字符串除了容易出现语法错误,还存在SQL注入安全隐患,任何场景下都不推荐使用这种写法。

正确写法

所有遵循Python DB-API规范的数据库驱动(pymysql、mysql-connector、psycopg2、sqlite3等)都原生支持参数化查询,由驱动自动完成参数的引号包裹、特殊字符转义,从根源避免语法错误和注入风险。
根据你使用的数据库驱动对应占位符规则编写即可:

  • MySQL、PostgreSQL 场景(驱动占位符为%s)
msg = 'hello'
# SQL语句中用占位符代替实际参数,参数以元组形式作为execute方法的第二个参数传入
cursor.execute('UPDATE users SET message = %s WHERE UserId = %s', (msg, 13))
# 注意更新操作需要提交事务才会实际生效
conn.commit()
  • SQLite 场景(python自带sqlite3模块占位符为?)
msg = 'hello'
cursor.execute('UPDATE users SET message = ? WHERE UserId = ?', (msg, 13))
conn.commit()

不要尝试手动给拼接的字符串加单引号来修复问题,一旦参数内容包含单引号、转义字符或是恶意注入语句,依然会触发语法错误或数据安全问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:12:41