Lo primero, usa el módulo csv con los parámetros correctos para reconocer | como separador.
Para las familias, una prueba de si la familia existe en la BBDD previo a insertar la subfamilia debería ser suficiente, el modo exacto depende de si estás usando un ORM. Si la jerarquía está ordenada (es decir, la lista es siempre padre,hijo,nieto,...), puede ser algo como
Código Python:
Ver originalfamilia = fila[3].split(',') # donde 'fila' es la línea leída por el csv.reader
for f in familia:
if no existe en la bbdd:
insertar
Saludos.