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 :

comment chopper le nb de lignes d'une table dans un script python?


Sujet :

Python

  1. #1
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut comment chopper le nb de lignes d'une table dans un script python?
    Bonjour à tous,
    je n'arrive pas à récupérer le nb de lignes d'une table innodb mysql5...

    j'ai fait :
    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
    23
    24
    25
    26
     
    def connection ():
        #connection à la banque (attention à changer selon l'utilisateuer.. etc)
        bque = MySQLdb.connect(db="ma_databse",  user="moua")
     
        #ouverture d'un curseur dans la banque
        cursr = bque.cursor()
        return cursr
     
     
    # Fetch le curseur
     
    def execute_requete (cursr,requete):
        # Execute_requete de la requete
        exe = cursr.execute(requete)
        #commit
        cursr.execute("commit;")
        # Recuperation du resutat
        rst = cursr.fetchall()
        return rst
     
    curseur = connection()
     
    compte = "SELECT COUNT(*) FROM ma_table"
    cpt= execute_requete (curseur,compte)
    print cpt
    et j'obtiens :
    >>> ()
    ..

    donc c'est rigolo au debut mais là j'y suis depuis hier , je le tourne dans tous les sens et donc maintenant ça me fait beaucoup moins rire, forcément...
    Je sais que mes fonctions marchent, Je les ai dejà utilisées pour des requetes "insert"...
    qqn aurait-il la soluce s'il vous plait?

  2. #2
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Points : 58
    Points
    58
    Par défaut
    Tu as vérifier si ta table contien bien des données ?

  3. #3
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut
    oui oui,
    à la console j'ai la reponse standar :

    mysql> select count(*) from ma_table;
    +----------+
    | count(*) |
    +----------+
    | 62193 |
    +----------+
    1 row in set (0.00 sec)

  4. #4
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Points : 58
    Points
    58
    Par défaut
    Il est là le probleme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cursr.execute("commit;")
    # Recuperation du resutat
    rst = cursr.fetchall()
    return rst
    En fait, ce que tu retourne c'est le résultat de la requete "commit;", et c'est toujours vide.

    De plus, c'est normal que tu ne le vois que maintenant parce qu'avant tu ne faisait que des inserts, et les requetes insert ne retourne pas de résultats (list vide), tu n'a donc pas vu que ce que tu récupere en fait c'est le résultat du commit et pas de ta requete.

  5. #5
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut
    ah ! oki! merci beaucoup !

    Oui effectivement ça marche!
    Mais alors du coup je comprends plus à quoi sert le commit ...

  6. #6
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Mydriaze Voir le message
    Mais alors du coup je comprends plus à quoi sert le commit ...
    bah, dans ton cas, à rien
    Surtout que MySQL commit automatiquement chaque instruction si elle ne fait pas partie d'une transaction. Tu peux l'enlever sans crainte.

    Tu aura à utiliser le commit si jamais tu as besoin de transaction. Mais ce n'est pas quelque chose qu'on utilise systématiquement quand on fait du web.

  7. #7
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut
    Ah ok!
    c'est ça que je ne savais pas...
    Parce que je fais juste des scripts python pour exploiter mes tables sans aller sur le web, et je pensais que c'etait obligé de mettre commit dans les tables innodb...

    Merci pour tout !

  8. #8
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Citation Envoyé par Mydriaze Voir le message
    Ah ok!
    c'est ça que je ne savais pas...
    Parce que je fais juste des scripts python pour exploiter mes tables sans aller sur le web, et je pensais que c'etait obligé de mettre commit dans les tables innodb...

    Merci pour tout !
    bin de toute façon les commit sur les select c pas super util non plus... ça n a d'interet que sur les insert update delete

  9. #9
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Mydriaze Voir le message
    Ah ok!
    c'est ça que je ne savais pas...
    Parce que je fais juste des scripts python pour exploiter mes tables sans aller sur le web, et je pensais que c'etait obligé de mettre commit dans les tables innodb...

    Merci pour tout !
    Le "commit" n'est pas spécifique à python, c'est du MySQL. Le code python se charge juste d'acheminé la commande au serveur

  10. #10
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut
    ok!

    MERCI beaucoup !

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/07/2008, 12h20
  2. [MySQL] Problème différentiation des lignes d'une table dans une boucle
    Par ppioul dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/05/2008, 18h21
  3. ligne d'une table dans colonne d'un select
    Par Invité dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/09/2007, 11h49
  4. Réponses: 2
    Dernier message: 19/02/2007, 13h02
  5. Réponses: 2
    Dernier message: 15/09/2006, 12h18

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