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 :

Calcul de cumul d'une colonne sur une autre colonne (FLASK)


Sujet :

Réseau/Web Python

  1. #1
    Membre régulier
    Homme Profil pro
    consultant informatique freelance
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tchad

    Informations professionnelles :
    Activité : consultant informatique freelance
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 71
    Points
    71
    Par défaut Calcul de cumul d'une colonne sur une autre colonne (FLASK)
    Bonjour à tous, j'ai besoin de votre aide !

    En effet, je suis débutant sur le min-framework FLASK. Je suis entraine de faire un petit outil de gestion de suivi. Elle consiste à prendre en entré les données suivant (ID,libelle, montant,dateExecution) dont j'ai crée une table comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    +---------------+---------+------+-----+---------+----------------+
    | Field         | Type    | Null | Key | Default | Extra          |
    +---------------+---------+------+-----+---------+----------------+
    | IDSEimp       | int(11) | NO   | PRI | NULL    | auto_increment |
    | libelle       | text    | NO   |     | NULL    |                |
    | montant       | int(20) | NO   |     | NULL    |                |
    | dateExecution | date    | NO   |     | NULL    |                |
    +---------------+---------+------+-----+---------+----------------+
    Ensuite pour récupérer et afficher
    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
    27
    # Requête qui Sélectionne tous les suivis
    def select_all():
    	# Create cursor
    	cur = mysql.connection.cursor()
     
    	# Get suivi_exec
    	result = cur.execute("SELECT * FROM suivi_des_execution_des_importation")
     
    	suivi_exec = cur.fetchall()
     
    	return result, suivi_exec
     
    # la route qui traite la requête et renvoi la donnée au view
    @app.route('/suiviexecution')
    def suiviexecution():
     
    	result, suivi_execs = select_all() # sélectionne tous depuis la base de donnée
     
    	if result > 0: 
    		return render_template('suiviexecution.html', suivi_execs=suivi_execs)
    	else:
    		msg = "Il existe aucun suivi d'exécution d'importation."
    		return render_template('suiviexecution.html', msg=msg)
    	# Close connection
    	cur.close()
     
    	return render_template("suiviexecution.html")
    Code HTML : 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
    27
    28
    29
    30
    31
    32
    33
    34
    <!--  La vue qui affiche les données -->
          <div class="table-responsive">
            <table class="table table-striped table-sm">
              <thead>
                <tr>
                  <th>#</th>
                  <th>Date </th>
                  <th>Libellé</th>
                  <th>Montant</th>
                  <th>Montant CC</th> <!--Une colonne ajouté pour calculé le cumul de montant pour chaque itération -->
                  <th>Edition</th>
                  <th>Suppression</th>
                </tr>
              </thead>
              <tbody>
                {% for suivi_exec in suivi_execs %}
                <tr>
                  <td>{{suivi_exec.IDSEimp}}</td>
                  <td>{{suivi_exec.dateExecution}}</td>
                  <td>{{suivi_exec.libelle |truncate(50) }}</td>
                  <td>{{suivi_exec.montant}}</td>
                  <td>{{suivi_exec.montant}}</td> < {# Mon problème c'est ici, comment faire pour calculé le cumul du montant ici? J'ai essayé {{suivi_exec.montant}} +{{suivi_exec.montant}} Mais ça me donne pas ce que je veut.  #}
                  <td>
                  	<a href="#" class="btn btn-outline-info">Edit</a>
                  </td>
                  <td>
                  	<a href="#" class="btn btn-outline-danger">Suppr</a>
                  </td>
                </tr>
                {% endfor %}
     
              </tbody>
            </table>
          </div>
    Voici le résultat qui me donne:
    Nom : result1.png
Affichages : 626
Taille : 23,2 Ko

    Mon problème c'est au niveau de la colonne ajoutée lors de l'affichage, comment faire pour calculé le cumul du montant dans montant CC? J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{suivi_exec.montant}} +{{suivi_exec.montant}}
    Mais ça me donne pas ce que je voulais.

    Voici le résultat que j'attendais
    :
    Nom : resultat22.png
Affichages : 664
Taille : 29,9 Ko

    Je suis dispo pour une éventuellement question d'éclaircissement.
    Merci d'avance !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Je comprends que vous ne calculiez pas "montant CC" côté Python car cette colonne n'existe pas dans la table.

    Cà devient alors une question Jinja2: "comment assigner une variable avant la boucle, puis la mettre à jour et l'afficher à chaque itération?" à laquelle on trouve facilement des réponses en cherchant un peu sur Internet ou dans la documentation Jinja2.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    consultant informatique freelance
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tchad

    Informations professionnelles :
    Activité : consultant informatique freelance
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Je comprends que vous ne calculiez pas "montant CC" côté Python car cette colonne n'existe pas dans la table.

    Cà devient alors une question Jinja2: "comment assigner une variable avant la boucle, puis la mettre à jour et l'afficher à chaque itération?" à laquelle on trouve facilement des réponses en cherchant un peu sur Internet ou dans la documentation Jinja2.

    - W
    Oui exactement, c'est ce que je voulais faire. Merci je vais faire la recherche.

  4. #4
    Membre régulier
    Homme Profil pro
    consultant informatique freelance
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tchad

    Informations professionnelles :
    Activité : consultant informatique freelance
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 71
    Points
    71
    Par défaut
    D'après mes recherches, on peut déclarer des variables avec set, par exemple {% set variable = [] %} ce qui m'amène à faire ceci
    Code HTML : 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
      {% set mcc = 0 %}
     
                  {% for suivi in suivi_execs %}
                      {% set mcc=mcc+suivi['montant'] %} {# Je calcul le cumul #}
                    <tr>
                      <td>{{suivi.IDSEimp}}</td>
                      <td>{{suivi.dateExecution}}</td>
                      <td>{{suivi.libelle |truncate(50) }}</td>
                      <td>{{suivi.montant}}</td>
                      <td>{{ mcc }}</td> {# J'affiche le montant cumulé  #}
                      <td>
                      	<a href="#" class="btn btn-outline-info">Edit</a>
                      </td>
                      <td>
                      	<a href="#" class="btn btn-outline-danger">Suppr</a>
                      </td>
                    </tr>
     
                  {% endfor %}
    Qui est logique selon moi, mais il m'affiche toujours le même résultat qu'avant c'est comme si {% set mcc=mcc+suivi['montant'] %} n'a aucun effet. S'il vous plait aidez-moi !

  5. #5
    Membre régulier
    Homme Profil pro
    consultant informatique freelance
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tchad

    Informations professionnelles :
    Activité : consultant informatique freelance
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 71
    Points
    71
    Par défaut
    Presque trois jours de galère, mais au final j'ai résolu le problème grâce à
    Guidona
    .

    Pour ceux qui auront peut être besoin, voici comment j'ai résolu le problème.

    Puisque ma requête result, suivi_execs = select_all() # sélectionne tous depuis la base de donnée renvoi un tuple de dictionnaire dans suivi_execs. Il fallait faire ceci:
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    montant_cc = 0  # je crée une variable et Je l'initialise ce montant cumulé (montant_cc) à zero (0)
    for dict_tmp in suivi_execs:  #Je parcours mon tuple 
        montant_cc = montant_cc + dict_tmp['montant']  # Je fais la somme de nouveau montant et montant_cc précédent
        dict_tmp['montant_cc'] = montant_cc #Et enfin je l'ajoute dans mon dictionnaire comme {clé:valeur}

    Et enfin, j’envoie suivi_exec à JinJa2 pour l'afficher facilement. Donc ma fonction final est :
    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
     
    @app.route('/suiviexecution')
    def suiviexecution():
     
    	result, suivi_execs = select_all()
     
            # Le bout de code ajoute
    	montant_cc = 0
    	for dict_tmp in suivi_execs:
    		montant_cc = montant_cc + dict_tmp['montant']
    		dict_tmp['montant_cc'] = montant_cc
     
            # Fin bout de code ajouté 
     
    	if result > 0:
    		return render_template('suiviexecution.html', suivi_execs=suivi_execs)
    	else:
    		msg = "Il existe aucun suivi d'exécution d'importation."
    		return render_template('suiviexecution.html', msg=msg)
    	# Close connection
    	cur.close()
     
    	return render_template("suiviexecution.html")


    Merci à Guidona et wiztricks

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/02/2017, 15h44
  2. [XL-2010] Calcul de cumul avec une structure conditionelle
    Par bernadin.m dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/07/2014, 11h06
  3. [DATA] Calculer un cumul d'une variable
    Par BarryLyondon57 dans le forum SAS Base
    Réponses: 5
    Dernier message: 18/04/2013, 15h01
  4. Champ calculé comme cumul d'une somme ?
    Par Maxsen dans le forum IHM
    Réponses: 1
    Dernier message: 12/03/2008, 18h24
  5. [XI]calcul de cumul depuis une date
    Par lamyae_84 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 04/05/2007, 23h20

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