import pandas as pd import psycopg2 as pg import subprocess as sp import matplotlib.pyplot as plt # nom = input("Nom d'utilisateur : ") # print(nom) # util = 'db' + nom # print(util) sp.run(["stty", "-echo"]) mdp = input("Le mot de passe stp : ") sp.run(["stty", "echo"]) co = None try: # Connexion à la base # Attention ! pensez à remplacer dblogin , login et mot_de_passe #avec vos informations co = pg.connect(host='londres', database ='dblolaborie', user='lolaborie', password = mdp) df = pd.read_sql('''SELECT p.nomR,avg(s.gscore) as Moyenne_Score_Global_Region FROM Statistique s, Pays p, Region r WHERE s.codeP = p.code AND p.nomR = r.nom AND s.annee = '2021' GROUP BY p.nomR;''', con=co) # Score moyen global par région en 2021 fig = df.plot(x='nomr', y='moyenne_position_region') fig.set_title('Score moyen global par région en 2021') fig.set_xlabel('Région') fig.set_ylabel('Score moyen (sur 100)') plt.show() # Affichage df = pd.read_sql('''SELECT p.nom, s.gscore, s.annee FROM Statistique s, Pays p WHERE s.codeP = p.code AND s.gscore = (SELECT min(gscore) FROM Statistique s1 WHERE s1.annee = s.annee);''', con=co) # Pays ayant le score global le moins élevé par année print(df) df = pd.read_sql('''SELECT p.nom, s.gscore, s.annee FROM Statistique s, Pays p WHERE s.codeP = p.code AND s.gscore = (SELECT max(gscore) FROM Statistique s1 WHERE s1.annee = s.annee);''', con=co) # Pays ayant le score global le plus élevé par année print(df) df = pd.read_sql('''SELECT p.nomR, s.gscore, s.annee FROM Statistique s, Pays p WHERE s.codeP = p.code AND s.gscore = (SELECT min(gscore) FROM Statistique s1 WHERE s1.annee = s.annee);''', con=co) # Pays ayant le score global le moins élevé par année print(df) df = pd.read_sql('''SELECT p.nomR, s.gscore, s.annee FROM Statistique s, Pays p WHERE s.codeP = p.code AND s.gscore = (SELECT max(gscore) FROM Statistique s1 WHERE s1.annee = s.annee);''', con=co) # Pays ayant le score global le plus élevé par année print(df) # Affichage du message d'erreur en cas de probl ème de connexion except(Exception, pg.DatabaseError) as error : print(error) # Attention ! Toujours fermer la connexion lorsqu 'on en a plus besoin finally: if co is not None: co.close()