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

Python Discussion :

[psycopg 2.0][postgresql 8.2][python 2.5] Mettre un booléen dans une clause where


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 52
    Points : 29
    Points
    29
    Par défaut [psycopg 2.0][postgresql 8.2][python 2.5] Mettre un booléen dans une clause where
    Bonjour à tous

    J'espère que tout le monde va bien, et j'espère que j'ai mis ce post dans la bonne catégorie...

    J'ai un petit problème avec une requête sql dans un script python, qui interroge une base de données postgresql. J'ai mis les versions dans le titre.
    Ma requête est en soit très simple, je souhaite récupérer tous les champs suivant certaines conditions, dont certaines sont des booléens.

    J'ai donc quelque chose du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    query = """Select * from maTable where monChamp = \'%s\'"""
    rep = cursor.execute(query % (monBooleen))
    Je mets ici mon %s en rouge, mais évidement, ça ne fonctionne pas.
    J'ai tenté avec %b, %bool, %s::bool, bref, tout ce qui me passait par la tête. J'ai même testé %i... pour dire que je suis vraiment à cours d'idée !

    J'ai eu beau chercher, je n'ai rien trouvé qui puisse m'aider... Je suis retournée à la doc de psycopg, je n'ai pas trouvé. Google ne m'a pas beaucoup aidé non plus, ce que je trouve correspond plus à comment insérer un booléen dans la base plutôt que de requêter dessus en filtrant pas la clause where...

    Est-ce moi qui fait n'importe quoi (tout à fait possible) ou n'y a-t-il pas un type booléen simple à trouver ?

    Merci beaucoup pour l'aide que vous pourrez éventuellement m'apporter...

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

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

    ton serveur réclame une valeur boolean qu'il comprenne.
    Donc ni 'True', ni 'False' mais plutôt TRUE ou FALSE.
    Essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    query = """Select * from maTable where monChamp = %s"""
    rep = cursor.execute(query % str(monBooleen).upper())
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Merci de ta réponse... mais malheureusement cela ne fonctionne pas...
    J'ai comme réponse une erreur telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ProgrammingError: invalid input syntax for type boolean: "%s"
    Pour résoudre le problème en "tampon", j'ai mis des blocs "if" mais je n'ai que trois booléens à tester. Si j'en avais 5 ou 6, ça commencerait à être ennuyeux !

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

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

    as-tu bien tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> str(True).upper()
    'TRUE'
    >>> str(False).upper()
    'FALSE'
    >>> """select * from maTable where monChamp = %s""" % str(True).upper()
    'select * from maTable where monChamp = TRUE'
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Autant pour moi désolée...
    Quand on fait un tuple avec tous les paramètres, mais qu'on ne le passe pas à la requête, effectivement, ça ne fonctionne pas !
    Bête de moi !

    Merci beaucoup. J'ai encore quelques problèmes mais cela me retire une belle épine du pied

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

Discussions similaires

  1. python: gestion de positionnement des widgets dans une fenêtre
    Par noramokh dans le forum Général Python
    Réponses: 2
    Dernier message: 04/05/2014, 17h21
  2. Postgresql + javascript (et python) = Rdbhost
    Par genemartin dans le forum Outils
    Réponses: 0
    Dernier message: 12/11/2009, 18h40
  3. [8.0] Intégration de PostGreSQL dans une appli windows
    Par Didier69 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 27/01/2005, 16h26
  4. insérer des images dans une bd postgresql
    Par ephet dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/01/2004, 09h18
  5. [Postgresql]Connecter à une autre base dans une fonction
    Par alex2205 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2003, 11h30

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