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

如何使用Python变量更新MySQL数据库?

问题原因

你直接把Python变量写在SQL字符串里时,MySQL服务器会将hot_water_temp识别为数据表的列名,而非Python代码中的本地变量——毕竟SQL语句是发送到MySQL服务器执行的,服务器无法识别你Python环境里的变量,因此才会抛出“未知列”的错误。

正确的变量传递方法

有两种安全规范的方式将Python变量传入SQL语句:

方式1:使用位置占位符%s

这是mysql-connector官方推荐的参数化查询方式,先用%s占据变量位置,再将变量作为第二个参数传入execute()方法:

# 假设hot_water_temp是你已定义好的变量
mycursor.execute(
    "UPDATE enviromental SET temp = %s WHERE room = 'Hot Water Tank A'",
    (hot_water_temp,)
)
mydb.commit()

注意:这里的%s是SQL参数占位符,并非Python的字符串格式化符号,不需要加引号,驱动会自动处理类型转换和特殊字符转义。

方式2:使用命名占位符

如果需要传递多个变量,使用命名占位符会更清晰,避免顺序混乱:

update_data = {
    "temp_value": hot_water_temp,
    "room_name": "Hot Water Tank A"
}
mycursor.execute(
    "UPDATE enviromental SET temp = %(temp_value)s WHERE room = %(room_name)s",
    update_data
)
mydb.commit()
重要提醒

绝对不要用字符串拼接(比如f"UPDATE ... SET temp = {hot_water_temp}")的方式插入变量,这种写法会引发SQL注入漏洞,同时还可能出现数据类型不匹配、特殊字符转义失败等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:48:20