Podría intentar configurar el max_allowed_packet
parámetro solo para una sesión
:
sql ='SET SESSION max_allowed_packet=500M'
cursor.execute(sql)
sql = ...
args = ...
cursor.executemany(sql, args)
Si esto funciona, puede dejar el código como está o cambiar su archivo my.cnf (sabiendo que eso resuelve el problema de ejecutar muchos).