- 记一次mysql更新数据时踩的坑;
批量更新数据时,选择的是insert into on duplicate update..
.的语句,但是这个表里的主键用很多空数据,没错,mysql的主键允许Null数据存在。。。 于是在用insert into on duplicate update
语句操作时,对于主键为null的数据,无法更新,直接做了inset操作。 悲剧来了…
两万多条数据的表短短3天内,涨到了两亿。。。因为每天这张表要更新至少6次。。。
- 谨记:
更新批量数据时,如果选择用insert into on duplicate
update的方法,要确保更新的数据中主键没有null数据,如果表中有这样的数据存在,在读取数据时要把主键是Null的过滤掉;
python 的execute和executemany都可操作update语句,其中executemany操作update语句的语法为:
> cur.executemany(sql,df.values.tolist()) sql = 'update table set a = (%s),b=(%s) where c=(%s);
> # df是dataframe,列数要和sql里的占位符(%s)个数一致.