今天使用pymysql将数据插入数据到数据库时,一直报
TypeError: not enough arguments for format string的错误
找了很久没有也没有找到问题,后来,才发现是
cursor.executemany()
这个函数的问题,因为我这里是一次插入一条数据,所以应该用
cursor.execute()
因此,这里将就讲一下二者的区别,
分不清楚将像我今天这样踩一个大坑
cursor.execute()
它的第一个参数就是你的对数据库的sql语句,如果要往sql语句中传入数据,用(%s,…)做占位符,然后传入第二个参数,这个参数就得是一个元组
它每次只能进行一次sql操作,第二个参数应该是这样
(,..) # 前面有几个%s占位符就应该是几元组
cursor.executemany()
比如在执行 insert 时如果不想一条一条的插入数据,可以用这个函数,它支持批量插入数据,前面的第一个参数是一样的,值得注意的是,第二个参数要应该是这样一个类型
[(,),(,),......]
也就是说,这里必须要放一个列表,然后将要插入的元组数据放在列表里面
而今天,我就是将cursor.execute()写成了cursor.executemany(),当然我肯定没有在第二个参数那里写成一个列表,因此一直报
TypeError: not enough arguments for format string的错误
当然,报这个错误还并非就是上面的原因,还有可能真的是前面的占位符%s个数和后面的元组中的元素个数不等,你自己检查一下
想了解更多知识,欢迎移步到微信公众号
扫码或搜索数据分析者
如果对你有帮助,不要忘记点赞、关注、评论加收藏哦!