使用外部变量更新Mysql数据库

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

我正在尝试将 python 变量更新(而不是插入)到 Mysql 数据库中。搜索向我展示了许多将 UPDATE 设置为常量的示例,这对我有用:fragment

mycursor.execute("UPDATE enviromental SET temp = 10  WHERE room = 'Hot Water Tank A'")

mydb.commit()

效果很好,

但是,

print (hot_water_temp)

mycursor.execute("UPDATE enviromental SET temp = hot_water_temp  WHERE room = 'Hot Water Tank A'")

mydb.commit()

给我:

回溯(最近一次调用最后一次): 文件“/srv/nfs/mysqlconnector.py”,第 20 行,位于 mycursor.execute("更新环境设置温度= hot_water_temp,其中房间='热水箱A'") 文件“/home/paul/.local/lib/python3.11/site-packages/mysql/connector/cursor.py”,第 551 行,执行中 self._handle_result(self._connection.cmd_query(stmt)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“/home/paul/.local/lib/python3.11/site-packages/mysql/connector/connection.py”,第 490 行,在 cmd_query 中 结果 = self._handle_result(self._send_cmd(ServerCmd.QUERY, 查询)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ 文件“/home/paul/.local/lib/python3.11/site-packages/mysql/connector/connection.py”,第 395 行,在 _handle_result 中 引发错误。get_exception(数据包) mysql.connector.errors.ProgrammingError:1054(42S22):“字段列表”中未知列“hot_water_temp”


Is my python variable just not seen inside the SQL statement? I not, how can I get it into the statement?

This must be a pretty common thing to want to do, but none of my searches gave me even a hint of how this should be done

Regards
python mysql sql-update
1个回答
0
投票

最终对此感到困惑,但链接的文档没什么用处,就像大多数其他发布的信息一样,它引用了 INSERT,而不是 UPDATE。我必须使用两个变量,如下所示:

sql_update_query = """更新环境设置温度 = %s WHERE 房间 = %s"""

input_data = (hot_water_temp, '热水箱A')

mycursor.execute(sql_update_query, input_data)

我仍然不太明白发生了什么,但这个片段有效。

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