首页  >  文章  >  数据库  >  为什么我的带有变量的 Python MYSQL UPDATE 语句失败?

为什么我的带有变量的 Python MYSQL UPDATE 语句失败?

Susan Sarandon
Susan Sarandon原创
2024-11-08 17:01:02903浏览

Why Is My Python MYSQL UPDATE Statement with Variables Failing?

使用变量对 Python MYSQL UPDATE 语句进行故障排除

在 Python 中使用变量编写 MYSQL UPDATE 语句时,确保其正确性至关重要。遇到的一个常见错误如下:

cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)   

哪里出错了?

问题在于变量插入语句的方式。该代码片段没有使用正确的方法,而是简单地将字符串与变量连接起来,这是 MYSQL 不支持的。

正确的方法

要修复错误,您需要使用参数化查询,其中变量由占位符表示并作为单独的参数传递。正确的方法如下:

cursor.execute ("""
   UPDATE tblTableName
   SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
   WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))

替代方法

或者,您可以使用基本的字符串操作,但由于 SQL 注入漏洞,不鼓励这样做:

cursor.execute ("UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server='%s' " % (Year, Month, Day, Hour, Minute, ServerID))

额外注意

请记住,不同的数据库后端可能有不同的字符串替换约定。例如,SQLite 在更新查询中对字符串值使用单引号。

以上是为什么我的带有变量的 Python MYSQL UPDATE 语句失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn