Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre régulier
    Inscrit en
    septembre 2003
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 288
    Points : 86
    Points
    86

    Par défaut python et connexion mysql

    Bonjour,

    C'est la première fois que je fais un petit script de connexion à une base mysql depuis un script python, et j'ai un problème. En apparence, il a l'air de s'exécuter, mais il ne me renvoi rien après mon select. Voici mon code.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    #!/usr/bin/env python
     
    import os
    import subprocess
    import re
    import MySQLdb
     
    ''' connect to DB '''
    def connectDB():
            try:
                    conn = MySQLdb.connect(
                            host = "127.0.0.1",
                            user = "xxxx",
                            passwd = "xxxx",
                            db = "xxxx"
                    )
                    return conn
            except MySQLdb.Error, e:
                    print "Error %d: %s" % (e.args[0], e.args[1])
                    sys.exit (1)
     
    ''' execute sql queries '''
    def execSQL(conn,query):
            try:
                    cursor = conn.cursor(MySQLdb.cursors.DictCursor)
                    cursor.execute(query)
                    rows = cursor.fetchall()
                    cursor.close()
                    return rows
            except MySQLdb.Error, e:
                    print "Error %d: %s" % (e.args[0], e.args[1])
                    sys.exit (1)
     
    ''' diconnect from DB '''
    def closeDB(conn):
            conn.close()
     
    ''' main program '''
     
    conn = connectDB()
     
    while (1):
            results = execSQL(conn,'SELECT * FROM evt WHERE type="Send" OR type="Ring" OR type="Sys" ORDER BY tstamp')
            for row in results:
                    print row["type"]
     
    closeDB(conn)
    Ai-je loupé quelque chose ?

  2. #2
    Membre du Club
    Inscrit en
    juin 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : juin 2011
    Messages : 43
    Points : 61
    Points
    61

    Par défaut

    Bonjour,

    À première vue, je pense qu'il vous manque un commit dans votre fonction execSQL

    Code python :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    def execSQL(conn, query):
        try:
                    cursor = conn.cursor(MySQLdb.cursors.DictCursor)
                    cursor.execute(query)
                    cursor.commit() # <- ici #
                    rows = cursor.fetchall()
                    cursor.close()
                    return rows
        except ...

  3. #3
    Membre régulier
    Inscrit en
    septembre 2003
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 288
    Points : 86
    Points
    86

    Par défaut

    Merci, effectivement il me manquait ça, mais ce n'est pas la cause.

    Je me suis rfendu compte que .... ma table était viiiiddddeeeeeee hahaahaha. Forcément, il ne peut pas me renvoyer des données ...

    Ca marche mieux avec des données

    merci.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •