#usiamo codice copiato dall'esempio #a disposizione nel sito in # http://people.unica.it/robertotonelli/files/2018/10/altriComandiUtili.txt #apriamo il file auto e salviamo in una Lista da #usare come matrice a due coordinate "riga e colonna" finAuto = open("auto.txt","r") L_auto = [] for j in range(0,10): i = finAuto.readline().split() L_auto.extend([i]) #apriamo il file csv proprietari, con #separatore virgola, e salviamo in una Lista da #usare come matrice a due coordinate "riga e colonna" finProp = open("proprietari.csv","r") L_prop = [] for j in range(0,10): i = finProp.readline().split(',') L_prop.extend([i]) #Ho tutti i dati in python in due liste annidate, #da usare come riga e colonna, la prima da 10 righe #e 6 colonne, la seconda con 10 righe e 3 colonne. #per mysql prendiamo il codice in #http://people.unica.it/robertotonelli/files/2018/11/pythonEmysql2.pdf # oppure anche l'ultimo esempio di #http://people.unica.it/robertotonelli/files/2018/11/scriptVari-1.txt # in cui c'e' un ciclo per inserire dati presi da una tabella import MySQLdb db = MySQLdb.connect("localhost","user","passw","DB" ) cursor = db.cursor() cursor.execute('create database if not exists ACIDB') cursor.execute('use ACIDB') tab1 = "CREATE TABLE auto (marca char(50), modello char(10), anno int, nomeP char(50), cognomeP char(50), citta char(50))" cursor.execute(tab1) insert_stmt = ("INSERT INTO auto (marca, modello, anno, nomeP, cognomeP, citta) " "VALUES (%s, %s,%s, %s,%s, %s)") #c'e' da decidere i dati da inserire. #nel primo caso sono sei per ogni riga i #e devo inserire 10 righe for i in range(0,10): data = (L_auto[i][1], L_auto[i][3], L_auto[i][5], L_prop[i][0], L_prop[i][1], L_prop[i][2]) cursor.execute(insert_stmt, data) db.commit() #stessa cosa per l'altra tabella coi dati opportuni tab2 = "CREATE TABLE tab2 (modello char(10), citta char(50))" cursor.execute(tab2) insert_stmt = ("INSERT INTO auto (modello, citta) " "VALUES (%s, %s)") #c'e' da decidere i dati da inserire. #in questo caso inserisco se anno > 2013 # per ogni riga i e devo inserire 10 righe for i in range(0,10): if int(L_auto[i][5]) > 2013: data = (L_auto[i][3], L_prop[i][2]) cursor.execute(insert_stmt, data) db.commit() db.close() #le operazioni da fare sono praticamente identiche per i due file #e per inserire i dati nelle due tabelle. Le uniche differenze sono #lo split in lettura dati, la scelta delle colonne da inserire in "data" #e il costrutto if > 2013 per inserire nella seconda tabella. #Il codice pere risolvere l'esercizio e' in sostanza reperibile negli esempi online *********************************************************************** #esclusi i commenti il codice e' il seguente: finAuto = open("auto.txt","r") L_auto = [] for j in range(0,10): i = finAuto.readline().split() L_auto.extend([i]) finProp = open("proprietari.csv","r") L_prop = [] for j in range(0,10): i = finProp.readline().split(',') L_prop.extend([i]) import MySQLdb db = MySQLdb.connect("localhost","user","passw","DB" ) cursor = db.cursor() cursor.execute('create database if not exists ACIDB') cursor.execute('use ACIDB') tab1 = "CREATE TABLE auto (marca char(50), modello char(10), anno int, nomeP char(50), cognomeP char(50), citta char(50))" cursor.execute(tab1) insert_stmt = ("INSERT INTO auto (marca, modello, anno, nomeP, cognomeP, citta) " "VALUES (%s, %s,%s, %s,%s, %s)") for i in range(0,10): data = (L_auto[i][1], L_auto[i][3], L_auto[i][5], L_prop[i][0], L_prop[i][1], L_prop[i][2]) cursor.execute(insert_stmt, data) db.commit() tab2 = "CREATE TABLE tab2 (modello char(10), citta char(50))" cursor.execute(tab2) insert_stmt = ("INSERT INTO auto (modello, citta) " "VALUES (%s, %s)") for i in range(0,10): if int(L_auto[i][5]) > 2013: data = (L_auto[i][3], L_prop[i][2]) cursor.execute(insert_stmt, data) db.commit() db.close()