Comment mettre à jour plusieurs lignes avec une seule requête MySQL en python?
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb as mdb
con = mdb.connect('localhost', 'root', 'root', 'kuis')
with con:
cur = con.cursor()
cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s ",
("new_value" , "3"))
print "Number of rows updated:", cur.rowcount
Avec le code ci-dessus la troisième ligne de la valeur de la table des Écrivains dans la base de données kuis est mis à jour avec nouvelle_valeur et la sortie sera Nombre de lignes mises à jour: 1
Comment suis-je censé mettre à jour plusieurs lignes en même temps?
Changer votre
peut-être curseur.execute('update sql ...', multi=True)?
voulez-vous mettre à jour plusieurs lignes avec
Je veux mettre à jour comme "tom" dans la troisième rangée, c'est à dire en " 3 " et "sam" dans le quatrième c'est à dire '4', est-il possible avec le seul cur.execute(...) de la requête ou dois-je utiliser la même commande à plusieurs reprises?
les deux mon commentaire et @PeterMmm la réponse va travailler pour vous
WHERE
déclaration pour correspondre à de multiples critères?peut-être curseur.execute('update sql ...', multi=True)?
voulez-vous mettre à jour plusieurs lignes avec
"new_values" = 3
, ou plusieurs mises à jour sql avec différents "nouvelle_valeur"?Je veux mettre à jour comme "tom" dans la troisième rangée, c'est à dire en " 3 " et "sam" dans le quatrième c'est à dire '4', est-il possible avec le seul cur.execute(...) de la requête ou dois-je utiliser la même commande à plusieurs reprises?
les deux mon commentaire et @PeterMmm la réponse va travailler pour vous
OriginalL'auteur TechJhola | 2015-01-02
Vous devez vous connecter pour publier un commentaire.
Probablement vous êtes à la recherche pour le curseur.executemany.
c'est parce que sur le execute niveau il n'y a pas de base de données commettre jusqu'au point de vous faire
conn.commit()
, c'est le point de vous demander de executemany n'est-ce pas?Merci pour cette. Pouvez-vous m'aider dans la requête. Req - "Update matable SET status = 'statut' where id in ()"
matable SET status = %s where id = %s",[("nouveau statut" , "3"),("nouveau statut" , "6")])
OriginalL'auteur PeterMmm
Je ne pense pas que mysqldb a une façon de gérer plusieurs requêtes de mise à JOUR à la fois.
Mais vous pouvez utiliser une requête d'INSERTION avec SUR le DOUBLE de la CLÉ de mise à JOUR de la condition à la fin.
J'ai écrit l'exemple suivant pour la facilité d'utilisation et la lisibilité.
Explication de l'un des paquebots de
est le même que
Voici un exemple d'utilisation
La sortie de la requête
Valeurs de sortie
Cette réponse m'a sauvé beaucoup de temps. J'ai été mise à jour d'une table massive à l'aide de la première réponse et qu'il allait prendre des heures. À l'aide de l'INSERT SUR le DOUBLE de la CLÉ ne prend environ une minute avec la même requête. La raison en est expliqué sur la base de la page: "Dans la plupart des cas, la executemany() la méthode parcourt la séquence de paramètres, à chaque fois en passant les paramètres actuels de la méthode execute ()."
OriginalL'auteur Westly White
Simple que j'ai à écrire pour mon utilisation est.
data = ['valeur de la colonne 1', 'valeur de la colonne 2' , ... ,'la valeur de la colonne N']
OriginalL'auteur Kapil Tiwari