Boucle de traitements, données BDD

Fermé
Utilisateur anonyme - 14 oct. 2017 à 15:35
 Utilisateur anonyme - 14 oct. 2017 à 21:38
Bonjour,

Je récupère des données SQL en Python.
Je ne parviens pas à implémenter la boucle avec cette logique.

Je souhaiterais que pour chaque champ "code" PUIS pour chaque champ "libelle" d'un même code, mon code me fasse un calcul pour chaque nom.
Ainsi, en sortie, je souhaiterais lister une ligne par code et par libellé en csv

Ça donnerait donc ça en sortie :
aaa;libelleA;v3; autreChampDeLaBDD;
bbb;libelleB;v3; autreChampDeLaBDD;
ccc;libelleA;v3; autreChampDeLaBDD;
ccc;libelleB;v3; autreChampDeLaBDD;
ddd;libelleA;v3; autreChampDeLaBDD;


Voici un extrait des données dans ma BDD :



Voici mon code actuel :

#!/usr/bin/env python
# -*- coding: utf-8 -*

# on importe les modules necessaires
import MySQLdb
import sys
import csv

# On créé un dictionnaire contenant les paramètres de connexion MySQL
paramMysql = {
    'host'   : '',
    'user'   : '',
    'passwd' : '',
    'db'     : ''
}

###############################################

sql = """\
SELECT nom, v1, v2, code, libelle
FROM table
;
"""
try:
    # On  créé une conexion MySQL
    conn = MySQLdb.connect(**paramMysql)
    # On créé un curseur MySQL
    cur = conn.cursor(MySQLdb.cursors.DictCursor)
    # On exécute la requête SQL
    cur.execute(sql)
    # On récupère toutes les lignes du résultat de la requête
    rows = cur.fetchall()
    # On parcourt toutes les lignes

    dict = {}
    for row in rows:

            # Pour récupérer les différentes valeurs des différents champs
            nom = row['nom']
            v1 = row['v1']
            v2 = row['v2']
            code = row['code']
            libelle = row['libelle']
            # etc etc ...

            #Traitement d'une value
            if v2 <= xx:
                v3 = xx
            elif v2 > xx:
                v3 = xx

            #Pour chaque code, on va effectuer l'opération suivante :
            #Si v3 existe déjà dans le même pour le code, on incrémente le compteur
            if code in dict.keys():
                dict[code] += v3
            #Sinon on le créé
            else:
                dict[code] = licences

            #On incrémente un autre compteur
            if "A" in libelle:
                v4 = xxx
            elif "B" in libelle:
                v4 = xxx

            print (code, dict[code], v4, libelle)

except MySQLdb.Error, e:
    # En cas d'anomalie
    print "Error %d: %s" % (e.args[0],e.args[1])
    sys.exit(1)

finally:
    # On ferme la connexion
    if conn:
        conn.close()



En l'état actuel, j'arrive à incrémenter correctement "v3".
Pour le reste, les différents tutos du net ne m'ont pas aidé...

Qui aurait une solution ? :-)
Merci par avance de votre aide

Rom

1 réponse

Utilisateur anonyme
14 oct. 2017 à 21:38
Up !!
0