用python的MySQLdb库操作mysql数据库时,使用executemany可以批量插入数据,提高写入速度。使用executemany碰到的问题:
1. executemany和on duplicate key update一起用的时候:
错误的写法:
'INSERT INTO test (video_path,video_name) VALUES (%s,%s) ON DUPLICATE KEY UPDATE video_name =%s;'
报错:
TypeError: not all arguments converted during string formatting
正确的写法:
'INSERT INTO test (video_path,video_name) VALUES (%s,%s) ON DUPLICATE KEY UPDATE video_name =values(video_name);'
2. max_allowed_packet
报错:
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
因为mysql设置了写入的最大数据大小。查询大小:
mysql> show variables like "max_allowed_packet";
可以修改该值或者分批写入。