Maison > base de données > tutoriel mysql > Comment utiliser les instructions préparées avec MySQL en Python ?

Comment utiliser les instructions préparées avec MySQL en Python ?

Barbara Streisand
Libérer: 2024-11-08 07:48:01
original
325 Les gens l'ont consulté

How to Use Prepared Statements with MySQL in Python?

Utilisation d'instructions préparées avec MySQL en Python : une explication détaillée

Comprendre la syntaxe

Les instructions préparées dans MySQL offrent un moyen plus efficace et plus sécurisé d'exécuter des requêtes en séparant la phase de préparation des requêtes de la phase d'exécution. Lorsque vous utilisez des instructions préparées, il est important de suivre la syntaxe correcte pour éviter les erreurs potentielles.

Explication de l'erreur

Dans votre extrait de code, vous rencontrez une erreur car vous utilisez la syntaxe incorrecte pour les instructions préparées. Voici une description du problème :

sql = "PREPARE stmt FROM ' INSERT INTO {} (date, time, tag, power) VALUES (?, ?, ?, ?)'".format(self.db_scan_table)
self.cursor.execute(sql)
Copier après la connexion

Cette ligne tente de préparer une instruction nommée "stmt" à l'aide d'une chaîne SQL. Cependant, le module MySQLdb de Python ne prend pas directement en charge les commandes "PREPARE" et "EXECUTE".

Solution utilisant MySQLdb

Pour utiliser des instructions préparées avec MySQLdb, vous devez pour utiliser une approche légèrement différente :

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

Cette ligne crée une chaîne SQL avec des espaces réservés (caractères (?") pour les valeurs à insérer.

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

Cette ligne exécute le instruction préparée en utilisant les valeurs spécifiées dans le tuple. MySQLdb prépare automatiquement l'instruction et gère l'exécution.

Utilisation de MySQL Connector/Python

Une façon plus moderne et efficace d'utiliser les instructions préparées avec MySQL en Python consiste à utiliser Connecteur MySQL/Python. Il offre une option explicite « prepare=True » dans la fabrique de curseurs :

cursor = conn.cursor(prepared=True)

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

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

Cette approche offre un meilleur contrôle sur les instructions préparées et est recommandée pour améliorer les performances et la sécurité.

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!

source:php.cn
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