我正在尝试将 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
最终对此感到困惑,但链接的文档没什么用处,就像大多数其他发布的信息一样,它引用了 INSERT,而不是 UPDATE。我必须使用两个变量,如下所示:
sql_update_query = """更新环境设置温度 = %s WHERE 房间 = %s"""
input_data = (hot_water_temp, '热水箱A')
mycursor.execute(sql_update_query, input_data)
我仍然不太明白发生了什么,但这个片段有效。