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.
le message d'erreur renvoyé par SQLITE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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,))
question est-ce que ce problèeme est liée à SQLITE ?"sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 2 supplied."
Par avance merci.
Partager