Ciò che stai chiedendo qui è la classica decisione a 2 livelli contro 3 livelli (o n-tier).
Prima di tutto, non c'è una risposta intrinsecamente corretta. La tua scelta dipende molto da quali sono i tuoi obiettivi.
In una configurazione client-server, ci si connette direttamente al database dal client. Il vantaggio di questo è che è una configurazione semplice. Lo svantaggio è che stai essenzialmente dando accesso diretto al database a chiunque stia eseguendo il client (che include le informazioni sulla connessione al database). Potresti anche aver bisogno di verificare che tutti i driver di database corretti siano installati sulle macchine che eseguono il client (questo potrebbe non essere un problema per i programmi python / mysql).
In un sistema a 3 livelli, i client comunicano con un server delle applicazioni e quel server delle applicazioni è l'unico programma che interagirà con il server del database. Un vantaggio è la sicurezza: il database può essere al sicuro fuori dalla portata dei clienti. E non devi preoccuparti di configurare i driver del database su ciascun client. Inoltre, hai la funzionalità del server delle applicazioni se espandi alle applicazioni web e mobili. Lo svantaggio naturalmente è che il suo lavoro più da impostare - è necessario creare / implementare il server delle applicazioni (che può, btw, essere solo un server web).
tl / dr ... leggi su design a 2 livelli e 3 livelli