#批量插入并根据重复数据进行处理
class DF_MYSQL(DBBase):
#定义操作更新时间相关的方法
#获取上次更新的时间
def __del__(self):
#删除对象时关闭链接
self.mysql_cursor.close()
self.connect.close()
def update(self,df):
#update table_name对应的更新时间
sql = "INSERT INTO rp_m_record (mobile,calling_num,sum,count,calling_name,type,area1,area,score) " \
"VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s) " \
"ON DUPLICATE KEY UPDATE sum = sum + VALUES (sum),count = count + VALUES (count),type = IF(FIND_IN_SET(VALUES (type),type) < 0,CONCAT(type,',',VALUES (type)),type)"
i = 0
L = []
cols = ['mobile', 'calling_num', 'sum', 'count', 'calling_name', 'type', 'area1', 'area', 'score']
df = df.ix[:, cols]
list_df = df.values.tolist()
for eachline_list in list_df:
i = i + 1
L.append(eachline_list)
if i % 1000 == 0:
try:
self.mysql_cursor.executemany(sql,L)
except Exception as e:
jylog.info(e)
self.connect.rollback()
else:
self.connect.commit()
L = []
try:#将剩余插入数据库
self.mysql_cursor.executemany(sql,L)
self.connect.commit()
except:
self.connect.rollback()
VALUES (type) 函数取传入的相对应的索引位置