How to replace an existing material with one from other blend file with python?
This code 

with bpy.data.libraries.load(filepath, link=False) as (data_from, data_to):
    data_to.materials = data_from.materials


works correctly and you will get appended materials with suffix*.001* in your actual blend file. I propose , maybe not very elegant solution, but it works I have tested on my side.  And it gives you possibility not to replace all materials after adding. The script looks in next way:

import bpy

scn = bpy.context.scene
D = bpy.data
filepath = '//10_rrd.blend'    

actual_names = []
dict_names = {}

for i in range(len(D.materials)):
    s = D.materials[i].name + "_actual"
    dict_names[s] = D.materials[i].name
    D.materials[i].name = s
    actual_names.append(D.materials[i].name)    

with bpy.data.libraries.load(filepath, link=False) as (data_from, data_to):
    data_to.materials = data_from.materials  


all_names = []
for m in bpy.data.materials:
    all_names.append(m.name)

# finding name of added materials
s = set(actual_names)
new_added = [x for x in all_names if x not in s]

for mat in D.materials:    
    for mat_fix_name in new_added:
        value = dict_names.get(mat.name, None)        
        if mat_fix_name == value:
            print('Found a material copy for '+mat.name+' with name '+mat_fix_name)
            mat.diffuse_color = D.materials[value].diffuse_color
            mat.metallic = D.materials[value].metallic
            mat.roughness = D.materials[value].roughness
            mat.specular_intensity = D.materials[value].specular_intensity

print('-----------------------------------------------')

#clear appended materials
for mat_fix_name in new_added:
    D.materials[mat_fix_name].user_clear()
    bpy.data.materials.remove(D.materials[mat_fix_name])

#roll back names
for mat in D.materials:
    old_name = dict_names.get(mat.name, None)
    if old_name is not None:
        mat.name = old_name