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

PyQt Python Discussion :

Requête SQL avec une condition portant sur date


Sujet :

PyQt Python

  1. #1
    Membre du Club

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 39
    Points : 41
    Points
    41
    Billets dans le blog
    1
    Par défaut Requête SQL avec une condition portant sur date
    Bonjour,

    J'ai une requête SQL que j'effectue dans mon app PyQt, j'ai uniquement un problème lorsque ma requête a dans sa clause where une condition sur les dates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    re = QSqlQuery()
    dateS = QDate.currentDate().addDays(-1).toString("dd/MM/yyyy")
    print dateS, type(dateS)
    print re.exec_("SELECT P.FINAL, P.ORDRE FROM PRODUIT P "
            "JOIN ETAT E ON P.idEtat = E.idEtat"
            "WHERE E.idPersonne = %s AND E.EtatDate = %s"%(idPers, dateS))
    Bien evidemment dans ma base il ya ces tables et les colonnes qu'il faut. Bref, au vu du problème, j'ai effectué directement la requête directement dans mon SGBDR et voici la requête qui me donne le résultat escompté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT P.FINAL, P.ORDRE FROM PRODUIT P 
    JOIN ETAT E ON P.idEtat = E.idEtat
     WHERE E.idPersonne = 2 AND E.EtatDate = '01/08/2014'
    Donc j'ai modifié mon code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    re = QSqlQuery()
        dateS = QDate.currentDate().addDays(-1).toString("dd/MM/yyyy")
        dateS = "'%s'"%dateS
        print dateS, type(dateS)
        print re.exec_("SELECT P.FINAL, P.ORDRE FROM PRODUIT P "
                "JOIN ETAT E ON P.idEtat = E.idEtat"
                "WHERE E.idPersonne = %s AND E.EtatDate = %s"%(idPers, dateS))
    et toujours rien, quelqu'un a-t-il une idée? Merci d'avance

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il y a 2 pb dans la construction de la requête:

    - à la 2ème ligne, il manque un espace à la fin: "JOIN ETAT E ON P.idEtat = E.idEtat "

    - la date devrait être entourée d'apostrophes: "WHERE E.idPersonne = %s AND E.EtatDate = '%s' " % (...)
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par tyrtamos Voir le message
    - la date devrait être entourée d'apostrophes: "WHERE E.idPersonne = %s AND E.EtatDate = '%s' " % (...)
    Cela est fort juste.
    La question est de savoir l'intérêt de convertir une date Python en 'str' puis de passer ce str au driver de la BDD pour qu'il le convertisse en date côté BDD. Un driver conforme à la DBAPI devrait pouvoir prendre la date Python sans qu'on ait à la sérialiser (i.e. virer le .toString("dd/MM/yyyy")).

    - W
    PS: mais c'est juste un test de connexion internet ;-)
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre du Club

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 39
    Points : 41
    Points
    41
    Billets dans le blog
    1
    Par défaut
    Merci c'est ok

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/10/2014, 12h34
  2. requete sql avec une condition dans une zone de liste
    Par khilim1 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/12/2008, 12h00
  3. Réponses: 2
    Dernier message: 10/05/2007, 17h07
  4. [Requête/SQL]Faire une mise à jour sur une sélection
    Par Xe2007 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/04/2007, 17h03
  5. Requête SQL avec une réponse unique
    Par Glutinus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 16h35

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