Ho un file .sql contenente un gruppo di query SQL, con ogni query che si estende su più righe. Voglio eseguire queste query in MySQL tramite Python utilizzando MySQLdb
.Esegui il file .sql in Python con MySQLdb
sqlite3
has "a nonstandard shortcut" for this purpose called executescript()
, ma non sembra esserci alcuna funzione equivalente in MySQLdb
.
Ho notato this old question from 2 years ago che chiede la stessa cosa, ma ho trovato le risposte insoddisfacenti. Le risposte sono fondamentalmente:
Usa
subprocess
per eseguire il comandomysql
e inviare il vostro file sql.
Questo funziona, ma è piuttosto inelegante e introduce complessità indesiderate con la gestione degli errori e così via.
Se ogni query è su una singola riga, è sufficiente eseguire ogni riga separatamente.
Ma nel mio caso, si estendono su più righe, quindi questo non funzionerà.
Se ogni query non è su una singola riga, in qualche modo unirsi a loro.
Ma come? Voglio dire, posso incidere qualcosa abbastanza facilmente, quindi non c'è bisogno che tu risponda con le risposte un po 'cotta qui, e forse è quello che finirò a fare, ma c'è già una biblioteca consolidata che fa questo? Mi sentirei più a mio agio con una soluzione completa e corretta piuttosto che un trucco.
avevo presentato una risposta che invovled l'analisi del archiviare e costruire le query ma penso che sia ciò che intendevi per "un hack", quindi l'ho cancellato. – acattle