Maison >développement back-end >Tutoriel Python >Comment puis-je utiliser une liste Python comme paramètres dans une clause SQL `IN` ?

Comment puis-je utiliser une liste Python comme paramètres dans une clause SQL `IN` ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-20 13:15:15466parcourir

How Can I Use a Python List as Parameters in an SQL `IN` Clause?

Incorporer des listes Python dans des requêtes SQL en tant que paramètres

Vous possédez une liste Python (l) contenant des valeurs (par exemple, [1, 5, 8]), et vous souhaitez récupérer des données d'une table de base de données en fonction de ces éléments de liste. Plus précisément, votre objectif est d'émettre une requête SQL telle que :

select name from students where id = |IN THE LIST l|

Pour ce faire, envisagez d'utiliser une approche de requête paramétrée, qui est plus polyvalente et plus robuste que l'intégration de valeurs directement dans la chaîne SQL. Cette technique peut gérer efficacement les valeurs numériques et les valeurs de chaîne, éliminant ainsi tout problème d'échappement potentiel.

L'extrait de code Python suivant illustre cette approche :

placeholder= '?' # For SQLite. Adjust based on database parameter style.
placeholders= ', '.join(placeholder for unused in l)
query= 'SELECT name FROM students WHERE id IN (%s)' % placeholders
cursor.execute(query, l)

En utilisant des espaces réservés (par exemple, '?' ) dans la requête SQL et en passant ensuite la liste (l) en paramètre, vous vous assurez que les valeurs sont gérées correctement par la base de données. Cette approche garantit l'intégrité des données et évite les vulnérabilités potentielles d'injection SQL qui pourraient résulter d'une concaténation de chaînes incontrôlée.

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