Python/psycopg2 OÙ DANS l'énoncé
Quelle est la bonne méthode pour avoir la liste (countryList) être disponible via %s dans l'instruction SQL?
# using psycopg2
countryList=['UK','France']
sql='SELECT * from countries WHERE country IN (%s)'
data=[countryList]
cur.execute(sql,data)
Comme il est maintenant, il erreurs après la tentative d'exécution "OÙ les pays (TABLEAU[...])". Est-il un moyen de le faire autrement que par la manipulation de la chaîne?
Grâce
Vous devez vous connecter pour publier un commentaire.
Pour la
IN
opérateur, vous voulez un tuple au lieu de liste, et de supprimer les parenthèses de la chaîne SQL.Pendant le débogage, vous pouvez vérifier que le SQL est créée correctement avec
À expland sur la réponse un peu et adresse des paramètres nommés, et de la conversion de listes de n-uplets:
OR
. Par exemple:cur.execute("SELECT * FROM table WHERE col IN %(list1)s OR col IN %(list2)s", {'list1': [1,2,3], 'list2' = [4,5,6]})
Vous pouvez utiliser une liste python directement ci-dessous. Il agit comme l'opérateur en SQL et gère également une liste vide sans jeter de l'erreur.
source:
http://initd.org/psycopg/docs/usage.html#lists-adaptation