1. 程式人生 > >datafrme不用to_sql批量插入mysql的方法

datafrme不用to_sql批量插入mysql的方法

接上篇文章,優化版,一秒插入1w+資料

 

#批量插入並根據重複資料進行處理
class DF_MYSQL(DBBase):
    #定義操作更新時間相關的方法
    #獲取上次更新的時間
    def __del__(self):
        #刪除物件時關閉連結
        self.mysql_cursor.close()
        self.connect.close()

    def update(self,df,col_list):
        #update  table_name對應的更新時間
        sql = mysql_config.RP_M_RECORD_SQL
        i = 0
        n = 0
        cols = col_list
        df = df.ix[:, cols]
        list_df = df.values.tolist()
        times = len(list_df)//10000
        if len(list_df) % 10000 != 0:
            times = len(list_df)//10000 + 1        
        while n < times:
            L = list_df[i:i+10000]
            try:
                self.mysql_cursor.executemany(sql,L)
            except Exception as e:
                jylog.info(e)
                self.connect.rollback()
            else:
                self.connect.commit()
            i = i + 10000
            n = n + 1