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
Mary-Kate Olsenoriginal
2024-11-08 13:26:02798parcourir

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)

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))

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))

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:
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