Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PyQt, MySql] rechercher/afficher avec like

Sujet résolu
    13 octobre 2012 à 20:06:16

    Bonjour.

    J'ai un petit problème avec une méthode qui me permet d'effectuer des recherches grâce à une barre de recherche. Le principe est simple, j'ai une QLineEdit dans ma barre d'outil, je tape un morceau du nom d'un fichier que je recherche, et ma vue s'actualise en fonction des noms des fichiers qui matchent la recherche.
    Voici la méthode en question :

    def research(self):
    
            """ Slot servant à rechercher et afficher des fichiers """
    
            query = QtSql.QSqlQuery()
            query.prepare("SELECT * FROM videos WHERE name LIKE %?%")
            query.bindValue(0, self.research_bar.text())
            query.exec_()
    
            #On actualise la vue principale après la recherche
            self.modele.setQuery(query)
            self.modele.select()
    
            #On rétablit les slots
            self.tableau.doubleClicked.connect(self.launchFile)
            self.tableau.setModel(self.modele)
    


    Je voudrais me servir du mot clé LIKE dans ma requête pour faire ça. Le seul problème, c'est que ça ne marche pas pour l'instant. Ma vue s'actualise bien, mais elle ne liste aucun fichier correspondant à la recherche. Et j'avoue que je ne vois pas bien comment avancer. Je n'arrive même pas à vérifier que la recherche a bien retourné quelque chose.

    Je ne sais pas si je suis bien clair en définissant le problème, aussi si vous avez des questions n'hésitez pas, mais j'aurais bien besoin d'un coup de main :p

    Bonne soirée à tous.

    EDIT:

    Ok c'est juste ma requête qui ne marche pas bien. Quand je fais :
    query.prepare("SELECT id, name, vote FROM videos WHERE name LIKE ?")
            query.bindValue(0, self.research_bar.text())
    


    Et que je fais une recherche sur le nom entier du fichier, j'ai des résultats. Du coup j'ai juste besoin de modifier la requête pour qu'elle retourne tous les fichiers avec dans le nom, le morceau que je tape dans la barre de recherche. Sans tenir compte de la casse bien sûr :)

    EDIT 2:

    Le problème vient du fait que je n'arrive pas à faire l'équivalent de:

    SELECT id, name, vote FROM videos WHERE name LIKE '%?%'
    


    en python, car le point d'interrogation représente la variable, mais je n'arrive pas à faire prendre les % ) la requête.

    EDIT 3:

    Problème résolu comme ça :

    query.prepare("SELECT id, name, vote FROM videos WHERE name LIKE ?")
            query.bindValue(0, "%" + self.research_bar.text() + "%")
    
    • Partager sur Facebook
    • Partager sur Twitter
    http://maymayhem.fr/

    [PyQt, MySql] rechercher/afficher avec like

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown