Ho un panda abbastanza grande dataframe - 50
o così intestazioni e poche centinaia di migliaia di righe di dati - e sto cercando di trasferire questi dati in un database usando il modulo ceODBC
. In precedenza ero utilizzando pyodbc
e l'utilizzo di una semplice dichiarazione di eseguire in un ciclo, ma questo è stato di prendere assurdamente lunghi (1000 record per 10 minuti) ...come trasformare il dataframe panda per l'inserimento tramite l'istruzione executemany()?
Ora sto provando un nuovo modulo e sto cercando di introdurre anche se executemany()
io non sono abbastanza sicuro che cosa si intende con sequenza di parametri in:
cursor.executemany("""insert into table.name(a, b, c, d, e, f)
values(?, ?, ?, ?, ?), sequence_of_parameters)
dovrebbe apparire come un elenco costante lavoro attraverso l'intestazione di ogni come
['asdas', '1', '2014-12-01', 'true', 'asdasd', 'asdas', '2',
'2014-12-02', 'true', 'asfasd', 'asdfs', '3', '2014-12-03', 'false', 'asdasd']
- dove questo è un esempio di tre righe
o qual è il formato necessario?
come un'altra domanda correlata, come posso quindi convertire un normale dataframe panda in questo formato?
Grazie!
Come vengono DFS collegate? Sono tutti sottoinsiemi dello stesso df più grande? È possibile unire, concat tutto e scrivere in DB in una volta, forse – EdChum
Ciao Ed. È tutto un unico dataframe, ho pensato che dovessero essere riversati in sottoinsiemi di tutti i diversi header per lavorare all'interno della query ... quindi 'a', 'b', 'c' e così via sono lì per indicare diverse intestazioni di colonna per il dataframe –
Hai provato a 'pymssql'? (ma non ho esperienza se questo è più veloce come 'pyodbc') Ma con questo puoi semplicemente usare il metodo pandas' to_sql' (il driver deve essere supportato da sqlalchemy per poterlo usare con i panda) – joris