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

MySQL语法错误:Python读取PLC数据写入数据库SQL执行报错

问题原因

你的代码报错核心是SQL语法不符合MySQL规范:当数据库字段名包含空格时,必须用反引号包裹字段名才能被MySQL正确解析。原代码中INSERT语句里的product name、product value、product status`三个字段带空格却没有加反引号,导致MySQL解析SQL时把空格后的内容识别为语法关键词,触发语法错误。

修复方案

方案1:直接修改SQL语句(适配现有表结构)

仅需修改插入语句的字段定义部分,给带空格的字段加上反引号即可:

# 把原来的inserir_dados行替换为下面的内容
inserir_dados = "INSERT INTO db_100(`product name`, `product value`, `product status`) VALUES (%s,%s,%s)"

修改完成后重新运行脚本,即可正常写入数据。

方案2:规范字段命名(长期推荐)

建议修改数据库表的字段设计,把带空格的字段名改为下划线分隔的命名格式,比如product_name、product_value、product_status,对应的插入语句调整为:

inserir_dados = "INSERT INTO db_100(product_name, product_value, product_status) VALUES (%s,%s,%s)"

这种写法无需额外加反引号,兼容性更高,也能避免后续开发时反复出现同类语法错误。

可选优化

可以在写入数据的逻辑中增加异常捕获和事务回滚,方便定位问题同时避免数据异常:

try:
    cursor.execute(inserir_dados,sql)
    con.commit()
    print(f"数据写入成功,共写入{cursor.rowcount}条记录")
except Error as e:
    print(f"数据写入失败:{e}")
    con.rollback()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:45:04