Maison >base de données >tutoriel mysql >Pourquoi mon instruction Python MYSQL UPDATE avec des variables échoue-t-elle ?

Pourquoi mon instruction Python MYSQL UPDATE avec des variables échoue-t-elle ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-08 17:01:02965parcourir

Why Is My Python MYSQL UPDATE Statement with Variables Failing?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn