2013-12-10 10 views
39

biegnę to z PyDev w Eclipse ...Pymysql INSERT INTO nie działa

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" 

Rezultatem jest w górnej części konsoli mówi C: ... test.py, aw Konsola:

pisząc do db napisał do db

Więc to nie kończące aż po wykonanie polecenia. Ale kiedy patrzę na tabelę w MySQL, jest pusta. Rekord nie został wstawiony.

Po pierwsze, dlaczego nie jest to zapisywanie rekordu. Po drugie, jak mogę zobaczyć dziennik lub błąd, aby zobaczyć, co się stało. Zwykle powinien wystąpić jakiś błąd na czerwono, jeśli kod się nie powiedzie.

+0

Możliwy duplikat [Database nie aktualizuje automatycznie z MySQL i Python] (https: // stackoverflow .pl/questions/384228/database-does-not-update-automatic-with-mysql-and-python) – Simeon

Odpowiedz

76

Czy popełniłeś to? conn.commit()

+0

Nie wiedziałem o tym. Dzięki. To rozwiązało to. –

72

PyMySQL wyłączyć trybu automatycznego domyślnie, można dodać autocommit=True do connect:

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

lub zadzwoń conn.commit() po zapytaniu

+0

Dzięki. Szukałem przykładu autocommit. Doskonały! – davesave

+0

Doskonała odpowiedź :) dziękuję! –

0

Można też zrobić

  • conn.commit() przed wywołaniem close

lub

  • włączyć trybu automatycznego poprzez conn.autocommit(True) tuż po utworzeniu obiektu połączenia.

Oba sposoby zostały zaproponowane z różnymi ludźmi na powielanie pytanie, które można znaleźć tutaj: Database does not update automatically with MySQL and Python

Powiązane problemy