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