Commit f1261e71 authored by Marine Marsal's avatar Marine Marsal
Browse files

Add new file

parent 73c7460a
import psycopg2
import string
from DataMapper import *
class StatistiquesDataMapper(DataMapper):
# affiche la liste des exemplaires les plus emprunté dans l'ordre décroissant
def ressourcesPopulaires(self, conn) :
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT r.titre, COUNT(p.ref) nb_emprunt FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref GROUP BY r.titre HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC"
cursor.execute(sql1)
rows = cursor.fetchall()
return rows
except Exception as err:
print(err)
finally:
conn.close()
# print('Titre : {0} Nombre d\'emprunts : {1}\n'.format(row[0], row[1]))
# affiche le nombre de fois qu'une ressource en particulier a été empruntée
def nombreEmpruntRessource(self, codeUnique : int) :
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT COUNT(ep.ref) nb_emprunt FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref WHERE r.codeUnique = '{0}' HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC".format(codeUnique)
cursor.execute(sql1)
ressource = cursor.fetchone()
return ressource[0]
except Exception as err:
print(err)
finally:
conn.close()
#print("Titre : {0} Nombre d\'emprunts : {1}".format(ressource[0], ressource[1]))
# nombre de ressources empruntés par genre
def genresPopulaires(self) :
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT r.genre, COUNT(ep.ref) nb_emprunt FROM Ressource r JOIN Exemplaire ep ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref GROUP BY r.genre HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC"
cursor.execute(sql1)
rows = cursor.fetchall()
return rows
except Exception as err:
print(err)
finally:
conn.close()
# print('Genre : {0} Nombre d\'emprunts : {1}\n'.format(row[0], row[1]))
# retourne le nombre de fois qu'une ressource a été empruntée
def nombreEmpruntRessource(self, genre : int) :
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT COUNT(ep.ref) nb_emprunt FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref WHERE r.genre = '{0}' GROUP BY r.genre HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC".format(genre)
cursor.execute(sql1)
ressource = cursor.fetchone()
return ressource[1]
except Exception as err:
print(err)
finally:
conn.close()
#print("Genre : {0} Nombre d\'emprunts : {1}".format(ressource[0], ressource[1]))
# retourne le genre de docuement le plus emprunté par un adhérent pour suggestion
def genrePrefereAdherent(self, login : string) :
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT r.genre, nb_emprunt COUNT(ep.ref) FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref JOIN Pret p ON p.pretID = ep.pretID WHERE p.adherent = '{0}' GROUP BY r.genre HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC".format(login)
cursor.execute(sql1)
genre = cursor.fetchall()
return genre[0][0] # retourne le premier genre
except Exception as err:
print(err)
finally:
conn.close()
#print("Genre le plus emprunté : {0}".format(genre[1]))
#retourne l'age moyen des adhérents
def ageMoyenAdherent(self) :
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT AVG(DATE_PART('year', now()) - DATE_PART('year', a.dateNaissance)) FROM Adherent a"
cursor.execute(sql1)
age = cursor.fetchone()
return age[0]
except Exception as err:
print(err)
finally:
conn.close()
#print("Genre le plus emprunté : {0}".format(genre[1]))
def typeDocumentPopulaire(self) :
# retourne le type de document le plus emprunté ( livre, oeuvre musicale ou film )
# on récupère le nombre de livre emprunté, le nb de oeuvre musicale empruntées et le nb de films empruntés.
conn = self.connect()
try:
cursor : psycopg2.extensions.cursor = conn.cursor()
sql1 = "SELECT COUNT(ep.ref) FROM Livre l JOIN Ressource r ON l.codeUnique = r.codeUnique JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.refExemplaire = e.ref"
cursor.execute(sql1)
nbLivres = cursor.fetchone()
sql2 = "SELECT COUNT(ep.ref) FROM OeuvreMusicale om JOIN Ressource r ON om.codeUnique = r.codeUnique JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.refExemplaire = e.ref"
cursor.execute(sql2)
nbOeuvres = cursor.fetchone()
sql3 = "SELECT COUNT(ep.ref) FROM Film f JOIN Ressource r ON f.codeUnique = r.codeUnique JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.refExemplaire = e.ref"
cursor.execute(sql3)
nbFilms = cursor.fetchone()
if(nbLivres[0] > nbFilms[0] and nbLivres[0] > nbOeuvres[0]) :
return "livres"
elif(nbFilms[0] >= nbLivres[0] and nbFilms[0] > nbOeuvres[0]) :
return "oeuvres musicales"
elif(nbOeuvres[0] > nbFilms[0] and nbOeuvres[0] > nbLivres[0]) :
return "films"
except Exception as err:
print(err)
finally:
conn.close()
# pour connaître le nom de la table d'où proviennent les données :
# select v.tableoid::regclass from ville v
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment