SQLITE injection avec une liste d'arguments
Bonjour à tous!
Je me bat depuis plusieurs jour avec une commande python 3.2 et une commande SQL.
si je code en dur la requête cela marche (j'utilise la concatenation pour arriver à mes fins),
mais d'après ce que j'ai vu sur plusieurs forum, pour des raison de sécurité, la "concatenation" de chaîne de texte pour obtenir une commande SQL est à proscrire (risque d'injection de code).
l'idée de ma fonction est la suivante:
dans ma Db j'ai une colonne "Designation" qui peux contenir une phrase (liste de produit), l'utilisateur, rédige dans un champ de saisi une liste de mot clé, cette liste est envoyé à ma fonction, et SQLITE me renvoie une liste d'enregistrement qui contienne ces mot clés
ci-dessous mon code.
Code:
1 2 3 4 5 6 7
| def filter(self, string):
liste = tuple(string.split())
sql = " SELECT rec.Designation FROM RECETTE rec WHERE {seq}; ".format(
seq=' AND '.join(["rec.Designation LIKE '%?%' "] * len(liste)))
print (sql)
self.curseur.execute(sql, (liste,)) |
le message d'erreur renvoyé par SQLITE
Citation:
"sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 2 supplied."
question est-ce que ce problèeme est liée à SQLITE ?
Par avance merci.