Maison >base de données >tutoriel mysql >Comment exécuter une requête SELECT avec une clause IN à l'aide de MySQLdb ?

Comment exécuter une requête SELECT avec une clause IN à l'aide de MySQLdb ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 00:53:03192parcourir

How to Execute a SELECT Query with an IN Clause Using MySQLdb?

Exécution de "SELECT ... WHERE ... IN ..." à l'aide de MySQLdb

Lors de la tentative d'exécution d'une requête SELECT avec un IN utilisant MySQLdb, les utilisateurs peuvent rencontrer des problèmes où aucune ligne n'est renvoyée malgré le fonctionnement de la requête comme prévu à partir de la ligne de commande mysql. Cela peut se produire en raison de guillemets inutiles placés autour des valeurs IN.

Pour résoudre ce problème, une construction manuelle des paramètres de requête est requise. Dans Python 2 et 3, une chaîne d'espaces réservés (%s) séparés par des virgules peut être générée à partir de la liste des valeurs IN. La requête peut ensuite être formatée à l'aide de cette chaîne et exécutée avec la liste de valeurs d'origine.

Pour Python 3 :

<code class="python">args=['A', 'C']
sql='SELECT fooid FROM foo WHERE bar IN (%s)' 
in_p=', '.join(list(map(lambda x: '%s', args)))
sql = sql % in_p
cursor.execute(sql, args)</code>

Pour Python 2 :

<code class="python">args=['A', 'C']
sql='SELECT fooid FROM foo WHERE bar IN (%s)' 
in_p=', '.join(map(lambda x: '%s', args))
sql = sql % in_p
cursor.execute(sql, args)</code>

En suivant cette approche, la requête SQL sera correctement formatée avec les valeurs IN souhaitées, résolvant ainsi le problème où aucune ligne n'était renvoyée précédemment.

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