Quindi ho uno script python che attraversa circa 350.000 oggetti dati e, in base ad alcuni test, ha bisogno di aggiornare una riga che rappresenta ciascuno di quegli oggetti in un db MySQl. Sto anche usando pymysql dato che ho avuto il minimo problema con esso soprattutto quando si inviano query di selezione di grandi dimensioni (selezionare le istruzioni con la clausola where column IN (....)
che può contenere più di 100.000 valori).PyMySQL aggiornamenti diversi in una query?
Poiché ogni aggiornamento per ogni riga può essere diverso, ogni istruzione di aggiornamento è diversa. Ad esempio, per una riga potremmo voler aggiornare first_name
ma per un'altra riga vogliamo lasciare intatto lo first_name
e vogliamo aggiornare last_name
.
Questo è il motivo per cui non voglio utilizzare il metodo cursor.executemany()
che accetta una dichiarazione di aggiornamento generica e poi le trasmetti i valori come ho detto, ogni aggiornamento è diverso, quindi una dichiarazione di aggiornamento generica non è realmente lavoro per il mio caso. Inoltre, non voglio inviare oltre 350.000 dichiarazioni di aggiornamento singolarmente sul filo. Posso comunque raggruppare insieme tutte le mie dichiarazioni di aggiornamento e inviarle contemporaneamente?
Ho provato ad averli tutti in una query e utilizzando il metodo cursor.execute()
ma non sembra che aggiorni tutte le righe.
Quanti aggiornamenti di tipi diversi ci sono? vale a dire quante tabelle diverse stai aggiornando con quei terzi di un milione di valori? e quante colonne diverse su quei tavoli? Ad esempio, sono solo alcune dichiarazioni di aggiornamento diverse? –
Esistono altre opzioni utili oltre alle query "una query" o "un terzo di milioni"? Che dire se i dati sono stati caricati in un 'work table' nel database e manipolati da quello? Database come giocare con i dati nelle tabelle? –
@RyanVincent aggiornano tutti la stessa tabella ma la tabella ha 12 colonne e ogni istruzione di aggiornamento può aggiornare qualsiasi combinazione di colonne in una sola volta, da 1 a 10 colonne. –