Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens une « erreur de syntaxe SQL » lors de l'utilisation d'instructions préparées en Python avec MySQL ?

Pourquoi est-ce que j'obtiens une « erreur de syntaxe SQL » lors de l'utilisation d'instructions préparées en Python avec MySQL ?

DDD
Libérer: 2024-11-07 16:51:03
original
947 Les gens l'ont consulté

Why Am I Getting a

Utilisation d'instructions préparées avec MySQL en Python : clarifier la syntaxe et éviter les erreurs

Vous rencontrez une erreur lors de l'utilisation d'instructions préparées avec MySQL dans Python, avec le message "'Vous avez une erreur dans votre syntaxe SQL'". Examinons le code que vous avez fourni et identifions le problème.

Le code que vous avez utilisé pour préparer l'instruction semble correct, mais l'exécution ultérieure de l'instruction contient l'erreur. Plus précisément, le code dans la boucle semble utiliser des paramètres avec une syntaxe différente de celle attendue par l'instruction préparée.

sql = "EXECUTE stmt USING \'{}\', \'{}\', {}, {};".format(d, t, tag, power)
Copier après la connexion

Dans l'exemple fourni par la réponse, une approche plus efficace utilisant le module MySQLdb de Python est suggérée :

sql = ('INSERT INTO {} (date, time, tag, power) VALUES '
       '(%s, %s, %s, %s)'.format(self.db_scan_table))

self.cursor.execute(sql, (d, t, tag, power))
Copier après la connexion

Ici, les espaces réservés pour les valeurs (%s) sont spécifiés directement dans la chaîne de requête SQL, et les valeurs réelles sont transmises sous forme de tuple dans l'appel d'exécution. Cela élimine le besoin de formatage de chaîne lors de la phase d'exécution, ce qui était probablement à l'origine de l'erreur de syntaxe dans votre code.

Vous pouvez également utiliser le propre connecteur/Python de MySQL avec l'option prepare=True dans le curseur(). factory, ce qui est plus efficace et explicite que l'utilisation des instructions PREPARE et EXECUTE.

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