web-dev-qa-db-fra.com

Python Mise à jour mySQL, table de travail mais pas de mise à jour

J'ai un script python qui doit mettre à jour une base de données mysql, j'ai jusqu'à présent:

dbb = MySQLdb.connect(Host="localhost", 
       user="user", 
       passwd="pass", 
       db="database") 
try:
   curb = dbb.cursor()
   curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")
   print "Row(s) were updated :" +  str(curb.rowcount)
   curb.close()
except MySQLdb.Error, e:
   print "query failed<br/>"
   print e  

Le script imprime Row(s) were updated : avec le nombre correct de lignes qui ont un RadioID de 11. Si je change le RadioID en un autre nombre non présent dans le tableau, il dira Row(s) were updated :0. Cependant, la base de données ne se met pas à jour. Le champ CurrentState reste le même. Si je copie et colle l'instruction SQL dans PHPMyAdmin, cela fonctionne très bien.

33
user2144306

utilisation

dbb.commit()

après

curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")

pour valider toutes les modifications que vous avez "chargées" sur le serveur mysql

83
Lazykiddy

Comme l'a souligné @Lazykiddy, vous devez valider vos modifications après les avoir chargées dans mysql.

Vous pouvez également utiliser cette approche pour activer le paramètre de validation automatique, juste après l'initialisation de la connexion MySQL:

dbb.autocommit(True)

Ensuite, il valide automatiquement les modifications que vous avez apportées lors de l'exécution de votre code.

24
Cyclone

les deux réponses sont correctes. Cependant, vous pouvez également le faire:

dbb = MySQLdb.connect(Host="localhost", 
   user="user", 
   passwd="pass", 
   db="database",
   autocommit=True) 

ajouter autocommit = True

3
Lex Bryan