2012-02-07 9 views
6

Sto cercando di capire come usare la libreria MySQLdb in Python (sono il miglior novizio per entrambi).Perché la funzione "Inserisci" non aggiunge le righe utilizzando MySQLdb?

Sto seguendo il codice here, in particolare:

cursor = conn.cursor() 
cursor.execute ("DROP TABLE IF EXISTS animal") 
cursor.execute (""" 
    CREATE TABLE animal 
    (
    name  CHAR(40), 
    category CHAR(40) 
    ) 
""") 
cursor.execute (""" 
    INSERT INTO animal (name, category) 
    VALUES 
    ('snake', 'reptile'), 
    ('frog', 'amphibian'), 
    ('tuna', 'fish'), 
    ('racoon', 'mammal') 
""") 
print "Number of rows inserted: %d" % cursor.rowcount 
cursor.close() 
conn.close() 

posso cambiare questo codice per creare o eliminare tabelle, ma non posso farlo a commettere in realtà il INSERT. Restituisce il valore row.count come previsto (anche quando cambio il valore nella tabella, cambia in quello che mi aspetto che sia).

Ogni volta che guardo nel database con phpMyAdmin non ci sono inserti. Come impegno il INSERT nel database?

risposta

15

Si dimentica commit modifiche dei dati, autocommit è disattivata di default:

cursor.close() 
    conn.commit() 
    conn.close() 

Citando Writing MySQL Scripts with Python DB-API documentazione:

"L'oggetto di connessione commit() metodo impegna i cambiamenti in sospeso nella transazione corrente per renderli permanenti nel database. Nell'API DB , le connessioni iniziano con la modalità di autocommit disabilitata, quindi è necessario call commit() prima di disconnettere modifica o cambiamenti potrebbero andare persi. "

+0

Aw uomo. Grazie. Questa è una lezione che non dimenticherò di nuovo! Certo, funziona. (E ho avuto tutti gli indizi nella mia domanda! Sospiro.) –

+2

@JayGattuso, hai ragione, la tua domanda contiene la risposta: "ma non riesco a farla effettivamente impegnare l'INSERT" – danihp

Problemi correlati