web-dev-qa-db-fra.com

Pymysql Insert Into ne fonctionne pas

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.

49
Michael T

L'avez-vous commis? conn.commit()

106
qmorgan

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

98
Steely Wing

Vous pouvez soit faire

  • conn.commit() avant d'appeler close

ou

  • activer l'autocommit via 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

2
Simeon