使用Python脚本向MySQL更新HTML内容时遭遇SQL语法错误的求助
解决Python更新MySQL时HTML特殊字符导致的SQL语法错误
兄弟,你这个问题我太熟了!直接把HTML字符串硬拼进SQL语句里,像单引号、换行符这些特殊字符分分钟就把SQL语法搞崩了——比如你HTML里的class='n1',那个单引号会提前闭合SQL里的字符串引号,后面的内容就变成完全无效的SQL语法了,难怪会报1064错误。
给你两个关键解决思路,核心都是避开直接拼接SQL:
用参数化查询(必选方案)
这是处理SQL变量最安全、最规范的方式,mysql.connector原生支持参数化,让驱动帮你自动处理所有特殊字符的转义。把你的代码改成这样就行:# 用%s作为参数占位符,注意不是字符串格式化的%s,是SQL专用占位符 update_query = "UPDATE `table_name` SET `col_name` = %s WHERE `table_name`.`id` = 1" # 把doc_html放在元组里传给execute方法 mycursor.execute(update_query, (doc_html,))这样不管HTML里有多少单引号、换行、制表符,驱动都会自动转义成SQL能识别的格式,彻底解决语法错误问题。
为什么绝对不能直接拼接SQL?
除了现在遇到的语法问题,直接拼接还会带来SQL注入漏洞——哪怕你现在处理的是自己的内容,养成参数化的习惯也能避免以后踩大坑,这是后端开发的基本规范哦。
要是按上面改完还有问题,你可以检查下doc_html是不是正常的字符串(比如有没有编码异常),但参数化查询基本上能搞定99%的特殊字符问题。
内容的提问来源于stack exchange,提问作者wht_5005
相关产品推荐
相关产品推荐

