Ciao, io ho optato per la ricorsione in quanto in Python utilizzi meno memoria e di conseguenza il codice gira più velocemente, ti faccio l'esempio: se nel programma devi calcolare una media in funzione di n variabili con x valori, normalmente faresti:
media = sum(x valori,...) / n variabili
solo che così impieghi molto più tempo di esecuzione rispetto a calcolare il risultato passando per una funzione per via delle variabili globali..., se invece il 'calcoletto' che devi fare lo metti dentro una funzione, tutto ciò che ci sarà dentro essa sarà di tipo locale e quindi non verrà preso in memoria da inizio esecuzione del programma ma solo al momento del richiamo della funzione, qui sotto ti ho fatto l'esempio del calcolo della media di prima ma inserito dentro una funzione:
def media(lista_valori, n):
return sum(lista_valori) / n
Infine tornando alla tua domanda, per questi generi di programmi, dove si accede a DB di diverse dimensioni, ti consiglio di usare, quando possibile, funzioni ricorsive in modo da far girare il tutto in modo piu fluido, veloce e sicuro, senza appesantire troppo il tutto, sennò quando capitano tanti dati da processare va in timeout.