IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Requete BDD en minuscule


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut Requete BDD en minuscule
    Bonjour a tous, dans ma fonction je fais une requête en BDD, j'aimerai que quand je compare les enregistrements ils soit comparé en minuscule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    items = set(flatten(map(lambda k: Item.objects.filter(thesaurus__name__contains=k), keywords2)))
    Ma variable keywords2 est déjà en minuscule via .lower().

    Mais dans ma BDD j'ai des enregistrements qui sont en majuscule ou qui ont des lettres en majuscules et quand je fais ma requête sa ne me prend pas en compte ces enregistrement vu qu'ils sont ne sont pas similaire.

    Est t'il possible dans la requête a la BDD de dire qu'il doit les comparé en minuscule du genre (je sais que sa marche pas c'est pour exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    items = set(flatten(map(lambda k: Item.objects.filter(thesaurus__name__contains.lower()=k), keywords2)))
    Ou avez vous une autre solutions?

    Ma fonction complète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class ItemManager(models.Manager):
     
        def with_keywords(self, keywords):
            keywords2 = list(keywords)
            if not isinstance(keywords2, list):
                return []
            if not len(keywords2) > 0:
                return []
     
            items = set(flatten(map(lambda k: Item.objects.filter(thesaurus__name__contains=k), keywords2)))
            return items


    Merci d'avances !!!!

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    Tu peux utiliser icontains qui permet une recherche Case-insensitive, cf la documentation.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut
    Merci beaucoup, c'est exactement ce que je cherchais !


    Encre une question, pour ma recherche, j'aimerai que si l'utilisateur écrive nénuphar ou nenuphar la recherche soit la même.

    Donc soit que la recherche soit multiple au nombre de caractères spéciaux du a une lettres ex: (eéèê), mais si je dois traités toute les posibilités de carctères spéciaux, la requête peux devenir assez lourdes, si il y en a plusieurs dans un mot.....

    Django a t'il une fonction ou autres qui gère ce genre de cas ?


    Merci d'avances !!!

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    tu peux utiliser une expression regulière pour rechercher dans ta base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Item.objects.filter(nom__iregex=r'^it[éèeê]ms$')
    Reste à tester l'impact sur les performances.

  5. #5
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonsoir,

    utilisation d'expressions regulières... intéressant.

    Une question.
    Pour ce qui des caractères non accentués. Comment les transcodes t'on pour afficher dans son rendu Html?
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  6. #6
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,
    Pour ce qui des caractères non accentués. Comment les transcodes t'on pour afficher dans son rendu Html?
    Pour afficher les caractères accentués sans problème, je précise simplement le charset, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        </head>
        <body>
            éàçê
        </body>
    </html>
    et l'affichage est correcte.

Discussions similaires

  1. requete BDD à partir d'une liste de clé primaire
    Par kaljerhom dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 11/04/2011, 15h37
  2. soucis requete BDD
    Par erox44 dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/06/2009, 10h58
  3. [access] requete BDD
    Par adrien51 dans le forum IHM
    Réponses: 13
    Dernier message: 18/02/2008, 16h21
  4. [MySQL] pb d'affichage d'une requete bdd
    Par alizea77 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/01/2008, 14h02
  5. optimiser BDD pr requete
    Par xopos dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/02/2005, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo