Je lance ceci depuis PyDev dans Eclipse ...
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"
Le résultat est, en haut de la console, il dit C: ... test.py, et dans la console:
écrire à db a écrit à db
Il ne se termine donc qu'après la commande d'exécution. Mais quand je regarde dans le tableau de MySQL, c'est vide. Aucun enregistrement n'a été inséré.
Tout d'abord, pourquoi n'écrit-il pas le dossier? Deuxièmement, comment puis-je voir un journal ou une erreur pour voir ce qui s'est passé. Habituellement, il devrait y avoir une sorte d'erreur en rouge si le code échoue.
L'avez-vous commis? conn.commit()
PyMySQL désactiver autocommit
par défaut, vous pouvez ajouter autocommit=True
À connect()
:
conn = pymysql.connect(
Host='localhost',
user='user',
passwd='passwd',
db='db',
autocommit=True
)
ou appelez conn.commit()
après l'insertion
Vous pouvez soit faire
conn.commit()
avant d'appeler close
ou
conn.autocommit(True)
juste après avoir créé l'objet de connexion.Les deux façons ont été suggérées par diverses personnes lors d'une duplication de la question qui peut être trouvée ici: La base de données ne se met pas à jour automatiquement avec MySQL et Python