pymysql 中 execute 和 executemany 性能对比

今天在mysql中插入大批量数据时,突然想起pymysql 还有executemany 方法,那么这两个方法到底谁快?快多少?

老规矩,先上测试代码:

class IN_sql():
    def __init__(self):
        print('初始化中...')
        self.connDB = pymysql.connect(host=DB_HOST,
                                      user=DB_USER,
                                      passwd=DB_PASSWD,
                                      db=DB_DB,
                                      charset='utf8mb4')
        self.connDB.ping()
        self.cu=self.connDB.cursor()

    def workOn(self):
        L=[]
        with open("./1W.txt","r",encoding="utf-8")as f:
            while True:
                res=f.readline().replace("\r","").replace("\n","")
                if not res:
                    break
                L.append(res)
        #统计插入所需时间
        start = time.time()
        sql = "insert ignore into article(an) values(%s);"
        
        #execute 执行代码
        for l in L:
            self.cu.execute(sql, l)
            
        #executemany 执行代码
        #self.cu.executemany(sql, tuple(L))
        
        self.connDB.commit()
        print('共计用时(秒):' + str(round(time.time() - start, 2)))

        self.cu.close()
        self.connDB.close()


if __name__ == '__main__':
    insert=IN_sql()
    insert.workOn()

测试结果

方法量级耗时(s) 1W 10W 100W
execute 3.126 25.139 248.022
executemany 0.1 0.981 10.854

总结

可以看出明显的区别,,如果需要批量插入数据库,还是用 executemany方法好些,这个和execute 完全不是一个数量级!!!

你可能感兴趣的:(python,pymysql,execute)