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

Réseau/Web Python Discussion :

Le grand pas dans mon apprentissage de python - la connexion avec une base mysql par script


Sujet :

Réseau/Web Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Le grand pas dans mon apprentissage de python - la connexion avec une base mysql par script
    Bonjour,
    je viens de réussir, grâce au très bon tutoriel Python le livre Python de Gérard Swinnen, la connexion à une petite base d'essai dans IDLE, mais voudrais maintenant enregistrer le tout dans un script de fonction à appeler par la suite. Seul problème, mon script, ci-dessous, ne marche pas comme il faut. La command print marche, ce qui veut dire qu'à priori la fonction a marché aussi non ?
    Pour info, j'insère des input() simplement pour laisser les résultats à l'écran et ainsi pouvoir voir à quel moment l'éxecution déjante, ils n'ont pas d'autre fonction dans ce script. Merci d'avance pour tout aide.

    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
    # fonction de connexion à une base mysql local
    def breakthrough():
        import mysql.connector
        cnx=mysql.connector.connect(user='root',password='',host='localhost',database='test')
        cur=cnx.cursor()
     
     
     
     #appel de la fonction
    breakthrough()
    a="hold on a minute"
    print(a)
    input()
    cur.execute("SELECT * FROM fiches")
    input()
    list(cur)
    input()

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Ton cursor, de la manière dont tu le crées, n'existe que dans l'espace de nom de la fonction où tu l'instancies. Tu dois donc le retourner au code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def breakthrough():
        import mysql.connector
        cnx=mysql.connector.connect(user='root',password='',host='localhost',database='test')
        return cnx.cursor()
     
    cur = breakthrough()
    a="hold on a minute"
    print(a)
    input()
    cur.execute("SELECT * FROM fiches")
    input()
    list(cur)
    input()
    Si tu as un message d'erreur, il est bien de le copier ici dans son intégralité.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 3
    Points
    3
    Par défaut cursor return
    Merci Vincent,
    je vais l'essayer tout de suite et vous donnerai des nouvelles. xx James Ogram

    Citation Envoyé par VinsS Voir le message
    Salut,

    Ton cursor, de la manière dont tu le crées, n'existe que dans l'espace de nom de la fonction où tu l'instancies. Tu dois donc le retourner au code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def breakthrough():
        import mysql.connector
        cnx=mysql.connector.connect(user='root',password='',host='localhost',database='test')
        return cnx.cursor()
     
    cur = breakthrough()
    a="hold on a minute"
    print(a)
    input()
    cur.execute("SELECT * FROM fiches")
    input()
    list(cur)
    input()
    Si tu as un message d'erreur, il est bien de le copier ici dans son intégralité.

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 3
    Points
    3
    Par défaut problème curson - message d'erreur
    Vincent,

    J'ai d'abord essayer votre version dans IDLE, mais ai reçu ce message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "<pyshell#23>", line 1, in <module>
        cur.execute("SELECT * FROM fiches")
      File "C:\Python34\lib\site-packages\mysql\connector\cursor.py", line 473, in execute
        # if not self._connection:
    ReferenceError: weakly-referenced object no longer exists
    Je me demande si c'est l'objet cur qui est le 'weakly-referenced object'. Je vais essayer un code simplifié sans fonction et sans return pour voir si je peux au moins me connecter à la base. à suivre. James O



    Citation Envoyé par VinsS Voir le message
    Salut,

    Ton cursor, de la manière dont tu le crées, n'existe que dans l'espace de nom de la fonction où tu l'instancies. Tu dois donc le retourner au code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def breakthrough():
        import mysql.connector
        cnx=mysql.connector.connect(user='root',password='',host='localhost',database='test')
        return cnx.cursor()
     
    cur = breakthrough()
    a="hold on a minute"
    print(a)
    input()
    cur.execute("SELECT * FROM fiches")
    input()
    list(cur)
    input()
    Si tu as un message d'erreur, il est bien de le copier ici dans son intégralité.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 3
    Points
    3
    Par défaut succès dans IDLE : echec dans script simplifié
    Bonsoir à tous:
    Voici une copie des instructions classiques qui marchent parfaitement dans IDLE, suivi après par le script .py qui lui, ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> cnx=mysql.connector.connect(user='root',password='',host='localhost',database='kalitsim')
    >>> cur=cnx.cursor()
    >>> cur.execute("SELECT * FROM fiches")
    >>> list(cur)
    [(1, 1, 'C-100714-7907', None, None, '', datetime.datetime(2015, 4, 15, 9, 17), 'ALL POs SENT TO ALL TRANSLATORS NL DELIVERED 30/03/15 POR DELIVERED 31/03 DE DELIVERED 09/04 ES EN COURS DE VALIDATION'), (2, 2, 'C-140814-8473', None, None, '', datetime.datetime(2015, 4, 5, 12, 0), 'Denis Hirson et Adine Segalyn will do it'), (3, 3, 'C-140814-8495', datetime.datetime(2015, 3, 13, 13, 23), datetime.datetime(2015, 3, 13, 13, 32), '', datetime.datetime(2015, 3, 2, 9, 0), '1st reread - questions out (13/04) INVOICE 0415306 SENT 14/04 (206.08)'), (4, 4, 'C-140814-8483', None, None, '', datetime.datetime(2015, 4, 20, 14, 23), "FRANCK WILL DO IT ENREGISTREMENT A 8H ENVOYER LE BDC A FRANCK ET L'INSCRIRE DANS KALITERA"), (5, 5, 'C-140814-8483', datetime.datetime(2015, 4, 20, 13, 0), datetime.datetime(2015, 4, 20, 13, 10), '', datetime.datetime(2015, 4, 5, 16, 30), 'CONTACT AND DELIVERY : bquerne@cls.fr (Benjamin QUERNE)')]
    >>>

    et voici maintenant les mêmes instructions dans un script édité en notepad ++, qui affiche bien "pas sur que ça marche...." mais qui laisse un écran noir après le dernier input(). Pour information et le fichier .py et la BDD kalitsim.sql sont dans le repertoire www de Wamp,mais je les ai également essayé ailleurs dans le repertoire Python 3.4 sans succès. Toute aide sera la bienvenue. (mes input() sont une vaine tentative de garder les résultats à l'écran noir).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    # script de connexion à une base mysql local
     
    import mysql.connector
    cnx=mysql.connector.connect(user='root',password='',host='localhost',database='kalitsim.sql')
    cur= cnx.cursor()  
    cur.execute("SELECT * FROM intervenants")
    list(cur)
    input("pas sur que ça marche...")
    input()
     
    input()
    James Ogram

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Dans un script "list(cur)" ne fait rien du tout, il faut utiliser print

    Pour le chemin de la base données, ça ne te coûte rien de mettre le chemin complet, histoire de fermer une porte.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 3
    Points
    3
    Par défaut problème cursor- script inopérant
    Merci de tes suggestions Vincent, vais essayer et te tenir au courant. James O


    Citation Envoyé par VinsS Voir le message
    Dans un script "list(cur)" ne fait rien du tout, il faut utiliser print

    Pour le chemin de la base données, ça ne te coûte rien de mettre le chemin complet, histoire de fermer une porte.

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 3
    Points
    3
    Par défaut problème cursor - pas de message d'erreur -pas de résultat avec script
    Bon, toujours rien, même avec le script et ayant pris soin d'activer wampserver et désactiver Skype qui parfois dérange ce dernier. Je me demande maintenant si ce n'est pas un problème de version de Python (3.4) ou de Mysql (3.5.1), vais essayer de contacter Gérard Swinnen:


    Voici mon dernier code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # script de connexion à une base mysql local
    import mysql.connector
    cnx=mysql.connector.connect(user='root',password='',host='localhost',database='C:/wampserver/www/kalitsim.sql')
    cur=cnx.cursor()  
    cur.execute("SELECT * FROM intervenants")
    print(cur)
    input("pas sur que ça marche...")

Discussions similaires

  1. Visualiser un fichier xls dans Excel (et non pas dans mon navigateur)
    Par n@n¤u dans le forum Général Conception Web
    Réponses: 10
    Dernier message: 10/07/2006, 08h43
  2. Outlook ne marche pas dans mon réseau sous linux
    Par Germain123 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 25/03/2006, 22h15
  3. [VB.NET][MySQL]ID insertion dans une base MySQL par ODBC
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/03/2006, 10h58
  4. Mon contrôle ne se "colle" pas dans mon groupe d'o
    Par saucisson dans le forum Access
    Réponses: 4
    Dernier message: 16/09/2005, 18h08
  5. Réponses: 2
    Dernier message: 06/06/2005, 15h13

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