Maison >base de données >tutoriel mysql >Pourquoi mon instruction Python MYSQL UPDATE avec des variables échoue-t-elle ?
Dépannage de l'instruction Python MYSQL UPDATE avec des variables
Lors de la création d'une instruction MYSQL UPDATE avec des variables en Python, il est crucial de garantir son exactitude. Une erreur courante rencontrée est la suivante :
cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)
Où vous êtes-vous trompé ?
Le problème réside dans la manière dont les variables sont insérées dans l'instruction. Au lieu d'utiliser la méthode correcte, cet extrait concatène simplement les chaînes avec des variables, ce qui n'est pas pris en charge par MYSQL.
La bonne approche
Pour corriger l'erreur, vous devez pour utiliser des requêtes paramétrées, où les variables sont représentées par des espaces réservés et passées en tant qu'argument distinct. Voici l'approche correcte :
cursor.execute (""" UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server=%s """, (Year, Month, Day, Hour, Minute, ServerID))
Méthode alternative
Vous pouvez également utiliser la manipulation de chaîne de base, mais elle est déconseillée en raison de vulnérabilités d'injection SQL :
cursor.execute ("UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server='%s' " % (Year, Month, Day, Hour, Minute, ServerID))
Remarque supplémentaire
Gardez à l'esprit que différents backends de bases de données peuvent avoir des conventions différentes pour le remplacement de chaînes. Par exemple, SQLite utilise des guillemets simples pour les valeurs de chaîne dans les requêtes de mise à jour.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!