<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">Il giorno 22 aprile 2015 23:58, Marco De Paoli <span dir="ltr"><<a href="mailto:depaolim@gmail.com" target="_blank">depaolim@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">Il giorno 22 aprile 2015 13:58, Marco De Paoli <span dir="ltr"><<a href="mailto:depaolim@gmail.com" target="_blank">depaolim@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra">Ecco un gist con il codice completo di test cases<br><a href="https://gist.github.com/depaolim/1dfd6e3d3789047c36b1" target="_blank">https://gist.github.com/depaolim/1dfd6e3d3789047c36b1</a><br></div></div></blockquote><div><br></div></span><div>... ho pensato che mi farebbero comodo anche le ForeignKey con il caso di natural key<br><br></div><div>e poi il tutto potrebbe essere messo in una app che implementa anche un command da usare da cli<br><br></div><div>e poi sarebbe carino generalizzare le regole di rimappatura<br>al momento le cerca nell'attributo "XLSX_2_FIELDS" del modello, si potrebbe permettere, che so...<br>a) di passarle come argomento alla funzione load, ok, questo è facile<br>b) di specificarle nei settings<br>c) ma il più divertente è sicuramente la possibilità di leggerle da un particolare sheet dell'xlsx<br><br>Il 3 permette, in pratica da Excel, di compilare un file con i dati e anche i meta-dati di rimappatura<br><br></div><div>... ma qua mi sa che sto finendo troppo OT: siamo su full-django. E per quello esiste django-it</div></div></div></div></blockquote><div><br></div><div>Spero di non essermi perso troppe cose per strada nella lettura affrettata, ma quando mi è capitato di fare questo tipo di attività ho usato una namedtuple per mappare il foglio di Excel, in modo da slegarmi del tutto dal titolo della colonna e in modo da non perdermi con gli indici delle varie colonne. In pratica in questa maniera mi basta che il dato sia nella colonna X e non che titolo abbia.</div><div><br></div><div>L'unico vincolo con questo approccio è che il numero di colonne deve essere quello, altrimenti la namedtuple va a farsi benedire. </div><div><br></div><div>Per il database, io preferisco crearmi una lista con i parametri e darli in pasto al cursor.executemany(), perché in questo modo la velocità di inserimento/aggiornamento diventa quasi trascurabile (questo per circa 350.000 righe al colpo verso un db Oracle).</div></div><br></div><div class="gmail_extra">E si sposa completamente il concetto KISS.. :)</div><div class="gmail_extra"><br></div><div class="gmail_extra">E spero di non avere sparato troppo sbagliato con la risposta... :D</div><div class="gmail_extra"><br></div><div class="gmail_extra">Ciao,</div><div class="gmail_extra">Simone</div></div>