Maison >base de données >tutoriel mysql >Comment puis-je utiliser des instructions préparées avec MySQL en Python pour améliorer les performances des requêtes et empêcher l'injection SQL ?
Utilisation d'instructions préparées avec MySQL en Python
Lorsque vous travaillez avec des opérations de base de données, les instructions préparées peuvent améliorer considérablement les performances des requêtes. En Python, les instructions préparées peuvent être utilisées avec MySQL.
Format de requête paramétrée en Python
En Python, vous pouvez créer une requête paramétrée en utilisant le format suivant :
cursor.execute("SELECT FROM tablename WHERE fieldname = %s", [value])
Le marqueur de paramètre %s agit comme un espace réservé pour la valeur réelle. Différents pilotes de base de données peuvent utiliser différents styles de paramétrage. Pour déterminer le style approprié pour votre pilote, vous pouvez importer le module du pilote et imprimer son attribut paramstyle.
Styles de paramétrage pris en charge
Selon la proposition d'amélioration de Python (PEP- 249), les styles de paramétrage suivants sont pris en charge :
Exemple d'utilisation
Pour démontrer l'utilisation d'instructions préparées, considérons l'exemple suivant :
import mysql.connector db = mysql.connector.connect( host="localhost", user="username", password="password", database="database_name" ) cursor = db.cursor() # Create a parameterized query parameterized_query = "SELECT * FROM users WHERE name = %s" # Execute the query with the provided parameter cursor.execute(parameterized_query, ("John Doe",)) # Fetch the results results = cursor.fetchall() # Close the cursor and connection cursor.close() db.close()
Utilisation de requêtes paramétrées Les requêtes garantissent que votre code est protégé contre les attaques par injection SQL et améliorent les performances des requêtes en permettant à la base de données de préparer le plan de requête à l'avance.
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!