2013-12-10 17 views
39

Io corro questo da pydev in Eclipse ...Pymysql Inserisci nella non funziona

import pymysql 
conn = pymysql.connect(host='localhost', port=3306, user='userid', passwd='password', db='fan') 
cur = conn.cursor() 
print "writing to db" 
cur.execute("INSERT INTO cbs_transactions(leagueID) VALUES ('test val')") 
print "wrote to db" 

Il risultato è, nella parte superiore della console si dice C: ... test.py, e in Console:

scrivendo al db ha scritto al db

quindi non è che chiude fino a dopo il comando di esecuzione. Ma quando guardo nella tabella in MySQL è vuoto. Un record non è stato inserito.

Prima di tutto, perché non sta scrivendo il record. In secondo luogo, come posso vedere un registro o un errore per vedere cosa è successo. Di solito dovrebbe esserci qualche tipo di errore in rosso se il codice fallisce.

+0

Eventuali duplicati di [Database non viene aggiornato automaticamente con MySQL e Python] (https: // StackOverflow .com/questions/384228/database-does-not-update-automatically-with-mysql-e-python) – Simeon

risposta

76

L'hai commesso? conn.commit()

+0

Non lo sapevo. Grazie. Questo l'ha risolto. –

72

PyMySQL disattivare autocommit per impostazione predefinita, è possibile aggiungere autocommit=True a connect:

conn = pymysql.connect(
    host='localhost', 
    user='user', 
    passwd='passwd', 
    db='db', 
    autocommit=True 
) 

o chiamare conn.commit() dopo la query

+0

Grazie. Stavo cercando un esempio di autocommit. Eccellente! – davesave

+0

Risposta perfetta :) grazie! –

0

È possibile sia fare

  • conn.commit() prima di chiamare close

o

  • abilitazione autocommit via conn.autocommit(True) destra dopo aver creato l'oggetto di connessione.

Entrambi i modi sono stati suggeriti da varie persone in una duplicazione della domanda che può essere trovato qui: Database does not update automatically with MySQL and Python