Sono abituato a (rovinato da?) L'interfaccia SQLite di python per gestire i database SQL. Una caratteristica interessante nell'API di SQLite di Python è il "gestore di contesto", cioè la dichiarazione with
di python. Io di solito eseguire le query nel modo seguente:Gestore del contesto per MySQLdb Python
import as sqlite
with sqlite.connect(db_filename) as conn:
query = "INSERT OR IGNORE INTO shapes VALUES (?,?);"
results = conn.execute(query, ("ID1","triangle"))
Con il codice di cui sopra, se la mia interrogazione modifica il database e mi dimentico di eseguire conn.commit()
, il manager contesto corre per me automaticamente all'uscita dalla dichiarazione with
. Gestisce bene anche le eccezioni: se si verifica un'eccezione prima che io commetta qualcosa, il database viene ripristinato.
Attualmente sto usando l'interfaccia MySQLdb
, che non sembra supportare un gestore di contesto simile fuori dalla scatola. Come creo il mio? C'è una domanda correlata here, ma non offre una soluzione completa.
Ottima soluzione! Non solo hai dato la risposta per MySQLdb, ma può anche essere utilizzato con altri driver. Inoltre, oursql sembra promettente. Grazie. – conradlee
@MMartins: Grazie mille per la correzione. – unutbu