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
相关产品推荐
相关产品推荐

