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
Libérer: 2024-11-08 17:01:02
original
995 Les gens l'ont consulté

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)   
Copier après la connexion

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))
Copier après la connexion

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))
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal