Maison > Article > base de données > Comment exécuter une requête SELECT avec une clause IN à l'aide de 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!