Voilà un petit exemple d'une requête SQL:
j'ai une petite base de données qui contient une table qui s'appelle "matable":
names adresses ages
Alice Adresse Alice 12
Bob Adresse Bob 25
Carol Adresse Carol 29
Bobin Adresse Donald 32
Emma Adresse Emma 41
Je cherche toutes les lignes dont le nom (colonne "names") commencent pas "Bo":
cur.execute('SELECT names, adresses, ages FROM matable WHERE substr(names,1,2)="Bo"')
Un "records = cur.fetchall()" donne:
[('Bob', 'Adresse Bob', 25), ('Bobin', 'Adresse Donald', 32)]
Qui est la liste de listes (ou plutôt une liste de tuples) attendue.
Après, la requête doit être paramétrée avec:
- le nom de la colonne voulue
- la longueur du mot du QLineEdit
- le mot du QLineEdit
Ce qui n'est qu'une manipulation de chaines de caractères en Python.
Voilà ce que ça donnerait avec mon exemple:
1 2 3 4 5 6
| col = "names"
mot = "Bo"
lgmot = len(mot)
requete = 'SELECT names, adresses, ages FROM matable WHERE substr({},1,{})="{}"'.format(col, lgmot, mot)
cur.execute(requete)
records = cur.fetchall() |
Ce qui donne, bien sûr, le résultat attendu.
Partager