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 :

probleme mysql python


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut probleme mysql python
    Bonjour

    J'ai créé une base mysql ( nom, prénom, adresse, code postal, ville) pour créer un genre d'annuaire.

    J'ai ensuite creer un script dans lequel je fais une recherche sur le nom dupond.
    Le script me retourne tous les dupond existants avec leurs prenom, adresses, etc ...
    voici ce script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #!/usr/bin/env python2
     
    import mysql.connector
     
    baseDeDonnees = mysql.connector.connect(host="localhost",user="root",password="azerty*", database="annuaire")
     
    curseur = baseDeDonnees.cursor()
     
    curseur.execute("SELECT * FROM annu_tele WHERE nom='dupond' ")
     
     
    for ligne in curseur.fetchall():
     
         print(ligne)
     
     
     
    baseDeDonnees.close()

    Je souhaiterai, que mon script me demande un critere de recherche (par exemple il me demande quel nom je veux)

    et qu à partir de la il me donne tous les noms existants dans la base


    la ça ne fonctionne pas et je ne sais pas comment faire.


    Cordialement

    Frédéric

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    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 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Salut,

    Citation Envoyé par FREDD77000 Voir le message
    la ça ne fonctionne pas et je ne sais pas comment faire.
    Certes mais vous ne montrez rien de ce que vous avez essayé de faire et saisir une chaine de caractères avec raw_input pour la passer à une fonction qui... ne devrait pas poser de problème particulier (si vous avez pris le temps d'apprendre à programmer avec Python).

    - W

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut probleme mysql python
    Bonjour et merci pour la réponse.

    Mon code est le suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #!/usr/bin/env python2
     
    # -*- coding: utf-8 -*-
     
    import mysql.connector
     
    testage = raw_input("recherche par critere. Entrez le nom : ")
     
     
    baseDeDonnees = mysql.connector.connect(host="localhost",user="root",password="azerty*1234*", database="annuaire")
     
    curseur = baseDeDonnees.cursor()
     
    curseur.execute("SELECT * FROM annu_tele WHERE nom='%testage%' ")
     
    for ligne in curseur.fetchall():
     
         print(ligne)
     
     
     
    baseDeDonnees.close()

    Mon objectif est le suivant:

    le script me demande de rentrer un nom, par exemple dupond
    Le résultat souhaité est l'affichage de tous les dupond (avec leurs noms, numéro de tel, etc...)

    Mais ça ne fonctionne pas

    Je pense que l'erreur est dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curseur.execute("SELECT * FROM annu_tele WHERE nom='%testage%' ")
    mais je ne sais pas ce qui ne va pas.

    Si je mets directement dupond

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curseur.execute("SELECT * FROM annu_tele WHERE nom=dupond ")
    la ça fonctionne.


    Merci
    Frédéric

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par FREDD77000 Voir le message
    Je pense que l'erreur est dans cette ligne : curseur.execute("SELECT * FROM annu_tele WHERE nom='%testage%' ") mais je ne sais pas ce qui ne va pas.
    C'est un souci de SQL, pas de Python. Donc tu aurais été mieux à poster là bas.
    Une requête qui utilise des jokers doit passer par le mot-clef "like" => curseur.execute("SELECT * FROM annu_tele WHERE nom like '%testage%' ").

    Ensuite bien entendu, il faut remplacer la variable "testage" par sa valeur et là ça devient un truc Python mais bon, ça tu es sensé savoir le faire.

    Et n'oublie pas de fermer le curseur.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    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 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Salut,

    Citation Envoyé par FREDD77000 Voir le message
    Je pense que l'erreur est dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curseur.execute("SELECT * FROM annu_tele WHERE nom='%testage%' ")
    mais je ne sais pas ce qui ne va pas.
    Prenez une chaine de caractères "SELECT * FROM annu_tele WHERE nom=" à laquelle vous voulez ajouter une autre chaine de caractères associée à la variable testage... Vous devriez connaître l'opérateur '+'.

    Mais, dans cette histoire, on cherche à convertir un type Python en un type supporté par le SGDB. C'est un peu plus compliqué que fabriquer des chaines de caractères.

    Par chance, on sait déléguer le boulot au pilote en lui passant une chaine de caractères qui décrit la requête d'un côté et des objets Python de l'autre.
    Les modalités étant variables d'un pilote à l'autre, il faut toujours ouvrir la documentation de mysql.connector pour y trouver des exemples qui expliquent comment faire.

    - W

Discussions similaires

  1. probleme mysql avec les tableaux
    Par bilane dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/09/2006, 11h57
  2. Probleme mysql chiffres decimaux
    Par schtek2 dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 27/05/2006, 10h14
  3. MySQL-python pour Suse 10
    Par ms7 dans le forum Bibliothèques tierces
    Réponses: 2
    Dernier message: 26/05/2006, 10h42
  4. problemes mysql
    Par celivacances dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 29/01/2006, 14h33
  5. Probleme Mysql
    Par lemagicien dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/11/2005, 13h48

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