刚刚使用pymysql连接数据库,然后想使用excute这个接口来插入数据,但是报错如下:
(1064, '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 \'")\' at line 1')
我赶紧将相同的insert语句直接通过命令行连接数据库然后插入,然后发现又能正常插入,对于这个问题,我有些懵逼。。。我的Insert语句里面并没有\这个字符,搞来搞去,突发奇想,难道是我的insert语句太长的原因?赶紧试了一下,将insert语句中的某些字段删掉然后插入,居然没有报错了,真的是。。。。有些无语。
所以,最后总结一下,如果给你报错\这个毛病,然后你的insert语句里面并没有\字符,很可能是由于你的insert语句太长或者说是pymysql一次性能插入的字段有限制,想办法缩短吧。
2020.9.22
ps:终于发现问题所在了,上面那种方法可以解决部分问题,但是如果插入一张图片,大家都知道,一张图片的二进制肯定不短,那么上面的解决方式就不行了,因此,我们要利用到下面这个接口:
self.cur.execute(sql, data)
经常使用pymysql的都知道我上面的self.cur啥意思,我也不知道咋给他起名字,大家理解就好,然后重点就来了,我们平时使用,是直接将完整的sql语句写完,然后第二个参数是基本不用的,但是,如果我们第一个参数中含有%s这种需要赋值的符号,那么第二个参数中的数值就会完善带有%s的sql语句。第二个参数可以是单个的参数,也可以是(data1, data2…)这种,括号里面的个数跟随sql里面的%s的个数而定。
通过上面这种方式,就不会再出现上面这种报错了。
2020.11.27