pymysql一次性执行多条语句之坑

   日期:2020-08-26     浏览:393    评论:0    
核心提示:记录一下今天使用pymysql遇到的一个小小的问题,其实说是坑,不如说是自己平时没有注意的一个细节,写下来,加深一下印象。问题描述为了提高效率,使用executemany一次性执行多条sql语句,将所有的数据库操作都封装到了类中,以下只把问题中用到的代码抽象如下: def update(self, data_list): 将列表中的数据更新到数据库中 sql_str = UPDATE score_new SET grade=%d

记录一下今天使用pymysql遇到的一个小小的问题,其实说是坑,不如说是自己平时没有注意的一个细节,写下来,加深一下印象。

问题描述

为了提高效率,使用executemany一次性执行多条sql语句,将所有的数据库操作都封装到了类中,以下只把问题中用到的代码抽象如下:

    def update(self, data_list):
        """将列表中的数据更新到数据库中"""
        sql_str = "UPDATE score_new SET grade=%d"
        try:
            self.cur.executemany(sql_str, data_list)
            self.conn.commit()
        except Exception as e:
            traceback.print_exc(e)
        finally:
            self.close_connect()

实例化db对象后,调用以上函数对多行sql更新,示例如下:

if __name__ == '__main__':
    db = DB()
    db.update([90, 78 , 89])

执行之后,结果如下:

提示数据类型不正确,需要一个数字类型而不是字符串类型,可是数据库中要更新的字段类型明明是int类型,而且单条语句执行的时候是没有问题。

解决方法

使用executemany时,第1个参数中所有的变量统统用%s格式化即可,如下:

sql_str = "UPDATE score_new  set grade=%s"

再执行就成功了。具体的原因跟了一下源码也没找到,姑且这么记下来吧。

 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服