Mysql数据库字段名是关键字处理方法
这里小编由于环境限定不能直接用Phpspreadsheet读取Excel, 因此使用了Python的xlwling插件读取Excel。Python代码很顺利的完成了数据读取,但是数据入库时,总是出现报错:
报错内容: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 ‘group, username) VALUES (‘1组’, ‘nickname’)’ at line 1
解决过程:
因为首次使用Python操作数据库,开始以为Python语法或变量格式与Mysql数据库不符,反复参考Navicat的设计格式,确认了每一个变量,问题仍然存在。
后面干脆就在Navicat写Mysql命令来测试,结果居然出现了同样的错误,原来不是Python语法的问题。而且,在Navicat中输入Insert命令时,Group字符串颜色是蓝色的。
这才让我想到Group会不会是不能使用的Mysql关键字呢,百度查找了资料,原来真的是这样。Thinkphp框架自动处理了这个情况,Python写原生代码就入坑了!关键是这个SQL语法报错,也没有提示说关键词不能识别,要是提示下就好了。
解决办法
方法一、重新设计Mysql数据表字段,避免将预留关键字作为字段名
方法二、
如果功能已经开发了一段时间,修改数据库结构影响范围广,那么就修改原生Insert命令。关键词字段增加引号,使用MySQL的引号“`”,记住不是普通的英文单引号“’”,是倾斜的上撇,不是竖直的上撇。键盘输入方式为键盘英文字母键上面的数字键1最前面的那个波浪线和顿号组成的键。也就是ESC下面,TAB键上面的按键。