You need to enable JavaScript to run this app. Python MySQL Connector中查询符号>被转义为>触发1064语法错误
优惠活动
大模型
产品
解决方案
定价
更多

Python MySQL Connector中查询符号>被转义为>触发1064语法错误

问题场景与异常现象

基于MySQL Connector开发数据库连接API时,编写带关系判断逻辑的查询语句出现执行异常:

  • 当查询字符串中写入>符号,将构造好的查询字符串作为待执行指令传入数据库时,原本的>在最终执行的SQL中被错误转义为$gt;、>类的HTML实体形式
  • MySQL无法识别这类转义符号,直接抛出语法错误中断执行

完整报错信息:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GHI_DATA.time_stamp >= 2019-5-10' at line 1 // Werkzeug Debugger

问题根因

这类转义并非MySQL Connector本身的默认行为,转义逻辑来自开发链路的前置环节:
Werkzeug作为开发调试服务器,在对前端传入的查询条件做参数解析、调试页面字符串渲染时,会默认将<、>这类特殊字符转义为&lt;、&gt;的HTML实体格式,没有对数据库查询场景的字符串做转义豁免,直接把带转义符的字符串透传给MySQL Connector执行,最终触发MySQL语法识别错误。

可落地的解决方法
  • 梳理查询字符串的全链路传递逻辑,在将字符串传给MySQL Connector执行前,对被错误转义的内容做反向实体解码,把&gt;、&lt;还原为原生的>、<符号后再传入执行
  • 放弃直接拼接前端原生参数构造SQL的写法,改用MySQL Connector内置的参数化查询接口传递筛选条件值,避免特殊字符在多层字符串传递过程中被中间层错误转义
  • 排查时优先打印实际传给数据库的原生SQL内容,不要把Werkzeug调试页面中展示的转义后文本,直接等同于实际执行的SQL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 07:15:04