Maison > base de données > tutoriel mysql > Pourquoi ma déclaration de mise à jour Python MySQL échoue-t-elle et comment puis-je y remédier ?

Pourquoi ma déclaration de mise à jour Python MySQL échoue-t-elle et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-11-08 13:26:02
original
822 Les gens l'ont consulté

Why is My Python MySQL Update Statement Failing, and How Can I Fix It?

Correction de l'instruction de mise à jour Python MySQL avec des variables

Lors d'une tentative de mise à jour des enregistrements MySQL à l'aide d'une instruction de mise à jour Python, les utilisateurs peuvent rencontrer des erreurs. Pour résoudre ce problème, il est crucial de vérifier la syntaxe et de garantir sa bonne application.

Déclaration incorrecte :

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

Analyse :

L'instruction incorrecte échoue en raison d'une concaténation de chaîne incorrecte et d'un espace réservé manquant pour la variable « Minute ». La façon correcte d'écrire cette déclaration est :

Déclaration 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

Syntaxe alternative :

Alternativement, la manipulation de chaînes peut être utilisée :

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

Attention :

Bien que la syntaxe alternative puisse fonctionner, elle est fortement déconseillée car elle laisse votre application vulnérable aux attaques par injection SQL . L'approche recommandée consiste à utiliser des espaces réservés, comme indiqué dans la déclaration correcte.

Compatibilité des bases de données :

De plus, certains backends de bases de données peuvent avoir des conventions de remplacement de chaînes différentes. Par exemple, SQLite utilise « ? » au lieu de '%s' pour les espaces réservés.

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