Mysql数据库字段名是关键字处理方法

overme2个月前 (10-17)程序开发232
现象:小编本地用Phpstudy搭建了一个PHP完整,网站代码用的thinkphp的框架,其中开发了一个表单登录数据的功能,手动网页登录测试是无异常的。由于频繁手动登录效率低,于是想着开发一个上传Excel读取数据并批量插入数据库的方法。

这里小编由于环境限定不能直接用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键上面的按键。

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。