You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyMySQL写入animus_list表时出现SQL语法错误求助

排查MySQL插入SQL语法错误的常见方向
  • 特殊字符未转义
    动漫名称常包含单引号(比如JoJo's Bizarre Adventure)、双引号或反斜杠,直接拼接SQL会截断语句触发语法错误。别手动转义,直接用参数化查询:
# 示例(PyMySQL/MySQLdb)
cursor.execute(
    "INSERT INTO animus_list (`name`, `score`, `rank`) VALUES (%s, %s, %s)",
    (cleaned_name, float(score), int(rank))
)

让数据库驱动自动处理特殊字符转义,避免语法问题。

  • 字段/表名与保留字冲突
    如果你的字段名是rank这类MySQL保留字,未加反引号包裹会触发语法错误。执行插入时给字段名加上反引号:
INSERT INTO animus_list (`name`, `score`, `rank`) VALUES (...)
  • 数据类型不匹配
    爬虫抓取的原始数据可能带多余字符(比如评分是"9.2/10"),或者字段是INT类型但你传入了字符串。先对数据做清洗和类型转换:
# 清洗评分,转成浮点数
score = float(anime_score.strip().split('/')[0])
# 清洗排名,转成整数
rank = int(anime_rank.strip().replace('#', ''))

确保插入值的类型和表字段定义完全匹配。

  • SQL语句拼接格式错误
    直接打印拼接后的完整SQL语句,复制到MySQL客户端执行,看是否能复现错误。比如字段数量和值的数量不匹配、逗号遗漏、括号不闭合这类低级错误,直接在客户端里一眼就能发现。

  • 隐性特殊字符或编码问题
    抓取的动漫名称可能包含零宽字符、全角空格这类不可见字符,或者表的编码不是utf8mb4导致字符无法解析。先清洗文本:

anime_name = anime_name.strip().replace('\u200b', '').replace('\uff00', '')

同时检查表的编码设置,确保是utf8mb4以支持所有Unicode字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:00:54