10. Esercizio [Calcolo delle imposte] con MySQL
![]() |
10.1. Trasferimento di un file di testo in una tabella MySQL
Il seguente script trasferirà i dati dal seguente file di testo:
12620:13190:15640:24740:31810:39970:48360:55790:92970:127860:151250:172040:195000:0
0:0.05:0.1:0.15:0.2:0.25:0.3:0.35:0.4:0.45:0.5:0.55:0.6:0.65
0:631:1290.5:272.5:3309.5:4900:6898.5:9316.5:12106:16754.5:23147.5:30710:39312:49062
nella tabella [impots] del seguente database MySQL [dbimpots]:
![]() |
La connessione al database [dbimpots] verrà effettuata utilizzando le credenziali (root,"").
Utilizzeremo la seguente architettura:
![]() |
Lo script [console] che scriveremo utilizzerà la classe [ImpotsFile] per accedere ai dati contenuti nel file di testo. L'accesso in scrittura al database verrà effettuato utilizzando i metodi descritti in precedenza.
Il codice dello script è il seguente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | |
Note:
- righe 106–110: istanziamo la classe [ImpotsFile] presentata nella sezione 8.1;
- riga 113: gli array limites, coeffR e coeffN vengono trasferiti in un database MySQL;
- riga 8: la funzione copyToMysql esegue questo trasferimento. La funzione copyToMysql crea un array di query da eseguire e le fa eseguire dalla funzione executerCommandes, riga 25;
- righe 28–89: la funzione executerCommandes è quella già presentata in precedenza nella sezione 9.7, con una differenza: invece di trovarsi in un file di testo, le query sono in una lista;
Il file di testo impots.txt:
12620:13190:15640:24740:31810:39970:48360:55790:92970:127860:151250:172040:195000:0
0:0.05:0.1:0.15:0.2:0.25:0.3:0.35:0.4:0.45:0.5:0.55:0.6:0.65
0:631:1290.5:272.5:3309.5:4900:6898.5:9316.5:12106:16754.5:23147.5:30710:39312:49062
Risultati dello schermo:
Verifica con phpMyAdmin:
![]() |
10.2. Il programma di calcolo delle imposte
Ora che i dati necessari per il calcolo delle imposte sono in un database, possiamo scrivere lo script di calcolo delle imposte. Utilizziamo nuovamente un'architettura a tre livelli:
![]() |
Il nuovo livello [dao] sarà collegato al DBMS MySQL e sarà implementato dalla classe [ImpotsMySQL]. Fornirà al livello [business] la stessa interfaccia di prima, costituita dal singolo metodo getData che restituisce la tupla (limits, coeffR, coeffN). Pertanto, il livello [business] rimarrà invariato rispetto alla versione precedente.
10.3. La classe [ImpotsMySQL]
Il livello [dao] è ora implementato dalla seguente classe [ImpotsMySQL] (file impots.py):
Note:
- riga 18: la query SQL SELECT che recupera i dati dal database MySQL. Le righe risultanti dalla query SELECT vengono quindi elaborate una per una utilizzando [cursor.fetchone] (righe 22 e 32) per creare gli array limits, coeffR e coeffN (righe 28–30);
- il metodo getData dell'interfaccia del livello [dao].
10.4. Lo script della console
Il codice dello script della console (impots_04) è il seguente:
Note:
- Riga 23: istanziazione dei livelli [dao] e [business];
- Il resto del codice è familiare.
Come nelle versioni precedenti dell'esercizio.



