Commit bdb6f35f authored by Oceane Bordeau's avatar Oceane Bordeau
Browse files

modifs

parent dc6b1bfb
......@@ -5,18 +5,32 @@ conn = psycopg2.connect("host=%s dbname=%s user=%s password=%s" % (
"tuxa.sme.utc", "dbnf18a037", "nf18a037", "1AfyGsAH"))
def inserer_musee():
nom = input("Entrez le nom du musée")
codep = input("code postal du musée : ")
ville = input("ville du musee")
adresse = input("adresse complete du musée : ")
def insert_date():
andeb = int(input("Entrez l'année de début\n"))
mdeb = int(input("Entrez le mois de début\n"))
jdeb = int(input("Entrez le jour de début\n"))
anfin = int(input("Entrez l'année de fin\n"))
mfin = int(input("Entrez le mois de fin\n"))
jfin = int(input("Entrez le jour de fin\n"))
date1 = datetime.date(andeb, mdeb, jdeb)
date2 = datetime.date(anfin, mfin, jfin)
if date1 > date2:
insert_date()
else:
return [f"'{andeb}-{mdeb}-{jdeb}'", f"'{anfin}-{mfin}-{jfin}'"]
def insert_musee():
nom = input("\nEntrez le nom du musée\n")
codep = input("\ncode postal du musée : \n")
ville = input("\nville du musee\n")
adresse = input("\nadresse complete du musée : \n")
cur = conn.cursor()
if nom and codep and ville and adresse:
try:
sql = f"INSERT INTO MUSEE_EXT ( nom, adresse, cp, ville) VALUES ('{nom}', '{adresse}', '{codep}', '{ville}');"
cur.execute(sql)
conn.commit()
print("insertion en cours")
except psycopg2.DataError as e:
print("echec de l'insertion")
print(e)
......@@ -25,27 +39,58 @@ def inserer_musee():
print()
def inserer_neolitique():
def insert_oeuvreext():
cur = conn.cursor()
nom = input("\nEntrez le nom de l'oeuvre extérieure à ajouter\n")
type = input(
"\nEntrez le type de l'oeuvre à ajouter (peinture, sculpture, photographie)\n")
date = int(input("\nEntrez la date de création de l'oeuvre\n"))
try:
sql = "INSERT INTO OEUVRE_EXT (titre, type, date_crea) VALUES ('Statue Menhir', 'sculpture', -4000);"
sql = f"INSERT INTO OEUVRE_EXT (titre, type, date_crea) VALUES ('{nom}', '{type}', {date}) RETURNING IDO;"
cur.execute(sql)
ido = cur.fetchone()[0]
conn.commit()
print("insertion success")
except psycopg2.DataError as e:
conn.rollback()
print("echec de l'insertion")
print(e)
return
sql = "SELECT idm, nom FROM Musee_ext"
cur.execute(sql)
all = cur.fetchall()
print("\nLes musées extérieurs sont:")
i = 1
for raw in all:
print(f" Musée {i} : {raw[1]}")
i += 1
res = int(input(
"\nA quel musée extérieur voulez-vous ajouter l'oeuvre ? (Entrez le numéro du musée)\n"))
print("\nPour le pret de l'oeuvre :\n")
date = insert_date()
try:
sql = f"INSERT INTO PRETE VALUES ({ido}, {all[res-1][0]}, TO_DATE({date[0]}, 'YYYY-MM-DD'), TO_DATE({date[1]}, 'YYYY-MM-DD'));"
cur.execute(sql)
conn.commit()
except psycopg2.DataError as e:
conn.rollback()
print("\nContrainte non respectée")
print("Message système :", e)
return
except psycopg2.IntegrityError as e:
conn.rollback()
print("\nContrainte non respectée")
print("Message système :", e)
return
def inserer_expoperm():
nom = input("Entrez le nom de l'expo")
def insert_expoperm():
nom = input("\nEntrez le nom de l'exposition")
cur = conn.cursor()
if nom:
try:
sql = f"INSERT INTO EXPO_PERM VALUES '{nom}');"
cur.execute(sql)
conn.commit()
print("insertion de l'exposition", nom, "réussi")
except psycopg2.DataError as e:
print("echec de l'insertion")
print(e)
......@@ -59,7 +104,7 @@ def liste_guide():
sql = "SELECT IDG, nom, prenom, date_embauche FROM guide"
cur.execute(sql)
raw = cur.fetchone()
print("Liste des guides :")
print("\nListe des guides :")
while raw:
print(f"Guide {raw[0]} :")
print(f" Nom : {raw[1]}")
......@@ -74,7 +119,7 @@ def liste_expos_permanentes():
sql = "SELECT nom FROM Expo_perm"
cur.execute(sql)
raw = cur.fetchone()
print("Liste des expositions permanentes")
print("\nListe des expositions permanentes")
while raw:
print(f"Nom de l'exposition : {raw[0]}\n")
print()
......@@ -87,7 +132,7 @@ def liste_expos_temporaires():
cur.execute(sql)
raw = cur.fetchone()
expos = []
print("Liste des expositions temporaires")
print("\nListe des expositions temporaires")
while raw:
if raw[0] in expos:
print("{raw[2]}", end="")
......@@ -107,7 +152,7 @@ def liste_oeuvres_louvre():
sql = "SELECT ido, titre, date_crea, type FROM Oeuvre_louvre OL ORDER BY type, date_crea ASC, titre ASC;"
cur.execute(sql)
raw = cur.fetchone()
print("Liste des oeuvre du Louvres :")
print("\nListe des oeuvre du Louvres :")
while raw:
print(f"Oeuvre numero : {raw[0]} :")
print(f" Titre : {raw[1]}")
......@@ -120,7 +165,8 @@ def liste_oeuvres_louvre():
def info_expo():
cur = conn.cursor()
tmp = 0
nom = input("Vous voulez connaitre des informations sur quelle exposition ?")
nom = input(
"\nVous voulez connaitre des informations sur quelle exposition ?")
sql = f"SELECT expo, Count(*), Avg(prix_acq) FROM OEUVRE_LOUVRE GROUP BY expo HAVING expo='{nom}'"
cur.execute(sql)
raw = cur.fetchone()
......@@ -142,7 +188,7 @@ def info_expo():
def afficher_guide_expo():
cur = conn.cursor()
choixExpo = input("Exposition permanente(1) ou exposition temporaire(2)")
choixExpo = input("\nExposition permanente(1) ou exposition temporaire(2)")
while(choixExpo != '1' and choixExpo != '2'):
choixExpo = input(
"Exposition permanente(1) ou exposition temporaire(2)")
......@@ -212,18 +258,19 @@ def liste_oeuvre_periode():
fin = int(input("\nEntrez l'année de fin de la période\n>"))
cur = conn.cursor()
sql = f"SELECT * FROM Oeuvre_louvre WHERE date_crea < {fin} and date_crea > {debut};"
print(f"Liste des oeuvres créées entre {debut} et {fin}:\n")
cur.execute(sql)
raw = cur.fetchone()
if raw:
print(f"Liste des oeuvres créées entre {debut} et {fin}:\n")
while raw:
print(f"Oeuvre numero : {raw[0]} :")
print(f"Nom : {raw[1]} :")
print(f"Dimension : {raw[2]} :")
print(f"Type : {raw[3]} :")
print(f"Date de création : {raw[4]} :")
print(f"Auteur : {raw[5]} :")
print(f"Prix d'acquisition : {raw[6]} :")
print(f"Date d'acquisition : {raw[7]} :")
print(f"Oeuvre numero : {raw[0]}")
print(f"Nom : {raw[1]}")
print(f"Dimension : {raw[2]}")
print(f"Type : {raw[3]}")
print(f"Date de création : {raw[4]}")
print(f"Auteur : {raw[5]}")
print(f"Prix d'acquisition : {raw[6]}")
print(f"Date d'acquisition : {raw[7]}")
print(f"Exposition asociée : {raw[8]}")
print(f"Appartenance : Louvre")
print(f"Durée : indéterminée")
......@@ -231,16 +278,15 @@ def liste_oeuvre_periode():
raw = cur.fetchone()
sql = f"SELECT IDO, titre, dimensions, type, date_crea, auteur, expo, ROUND(fin - debut) FROM Oeuvre_ext JOIN Expo_temp ON Oeuvre_ext.expo = Expo_temp.nom WHERE date_crea < {fin} and date_crea > {debut};"
print(f"Liste des oeuvres créées entre {debut} et {fin}:")
cur.execute(sql)
raw = cur.fetchone()
while raw:
print(f"Oeuvre numero : {raw[0]} :")
print(f"Nom : {raw[1]} :")
print(f"Dimension : {raw[2]} :")
print(f"Type : {raw[3]} :")
print(f"Date de création : {raw[4]} :")
print(f"Auteur : {raw[5]} :")
print(f"Oeuvre numero : {raw[0]}")
print(f"Nom : {raw[1]}")
print(f"Dimension : {raw[2]}")
print(f"Type : {raw[3]}")
print(f"Date de création : {raw[4]}")
print(f"Auteur : {raw[5]}")
print(f"Exposition asociée : {raw[6]}")
print(f"Appartenance : Autre")
print(f"Durée : {raw[7]}")
......@@ -367,21 +413,6 @@ def nb_expos():
raw = cur.fetchone()
def insert_date():
andeb = int(input("Entrez l'année de début\n"))
mdeb = int(input("Entrez le mois de début\n"))
jdeb = int(input("Entrez le jour de début\n"))
anfin = int(input("Entrez l'année de fin\n"))
mfin = int(input("Entrez le mois de fin\n"))
jfin = int(input("Entrez le jour de fin\n"))
date1 = datetime.date(andeb, mdeb, jdeb)
date2 = datetime.date(anfin, mfin, jfin)
if date1 > date2:
insert_date()
else:
return [f"'{andeb}-{mdeb}-{jdeb}'", f"'{anfin}-{mfin}-{jfin}'"]
def insert_expotemp():
cur = conn.cursor()
cur1 = conn.cursor()
......@@ -420,7 +451,7 @@ def insert_expotemp():
raw = cur.fetchone()
def inserer_guide():
def insert_guide():
cur = conn.cursor()
nom = input("\nEntrez le nom du guide à ajouter\n")
prenom = input("\nEntrez le prénom du guide à ajouter\n")
......@@ -491,105 +522,139 @@ def inserer_guide():
print("Message système :", e)
def insert_panneau():
cur = conn.cursor()
sql = "SELECT num FROM salle"
cur.execute(sql)
raw = cur.fetchone()
if raw:
print("Parmis les salles suivantes :")
while raw:
print(f" Salle {raw[0]}")
raw = cur.fetchone()
num = int(input(
"Dans laquelle voulez-vous ajouter un panneau ? (Entrez le numéro de la salle)\n"))
desc = input("\nQuelle est la description du panneau ?\n")
try:
sql = f"INSERT INTO Panneau (salle, description) VALUES ({num}, '{desc}');"
cur.execute(sql)
conn.commit()
except psycopg2.DataError as e:
conn.rollback()
print("\nContrainte non respectée")
print("Message système :", e)
def main():
cont = 1
while cont == 1:
print(conn)
menu()
cont = int(input("Continuer ? 1 si oui, 0 si non\n>"))
cont = int(input("Continuer ? 1 si oui, 0 si non\n> "))
conn.close()
print(conn)
return 0
def menu():
print("\nListe des requêtes :")
print(" 1. Lister les guides avec leur identification, nom, prénom, et date d'embauche.")
print(" 2. Lister toutes les informations des expositions permanentes.")
print(" 3. Lister toutes les informations des expositions temporaires en cours et futures, ainsi que les identifications et noms des salles qui leur sont attribuées.")
print(" 4. Afficher les identifications des guides participant à une exposition donnée (gérer cas exposition permanente et exposition temporaire).")
print(" 5. Afficher le nombre d'oeuvres et le prix moyen d'acquisition des oeuvres d'une exposition donnée.")
print(" 6. Lister les oeuvres appartenant au Louvre (identification unique, titre, dates et type), triées dans cet ordre par type, par date, par titre.")
print(" 7. Identifier de manière unique les oeuvres actuellement prêtées (pas les prêts passés ni futurs) par le Louvre, avec la date de fin du prêt, triées par date de fin du prêt.")
print(" 8. Afficher le temps moyen des prêts avec chaque musée extérieur, identifié de manière unique et avec leur nom et adresse (groupé par musée).")
print(" 9. Indiquer pour chaque oeuvre (inclure les oeuvres appartenant à des musées extérieurs) : le prix d'acquisition, le nombre de restaurations qu'elle a subi, et le coût cumulé des restaurations.")
print(" 10. Compter le nombre d'oeuvres actuellement absentes (= en prêt ou en restauration), groupées par exposition permanente identifiée de manière unique.")
print(" 11. Identifier de manière unique les oeuvres actuellement empruntées par le Louvre, avec l'identification unique et le titre de l'exposition temporaire où elles sont exposées, avec la date de fin de l'emprunt, triées par date de fin de l'emprunt.")
print(" 12. Afficher les oeuvres ayant été créées à une période donnée, avec toutes leurs informations ainsi que l'identification unique, nom, si elles appartiennent ou non au Louvre, les durées éventuelles des expositions dans lesquelles elles sont/ont été/seront exposées.")
print(" 13. Compter le nombre de créneaux d'attribution de visite d'expositions permanentes par guide (avec toutes les informations des guides, pas de distinction par exposition).")
print(" 14. Compter le nombre d'expositions accueillies par salles, par ordre décroissant, avec la durée cumulée, ainsi que l'affichage de toutes les informations de la salle.")
choice1 = int(input(
"\nVoulez-vous faire une requête (tapez 0) ou une insertion de données ? (tapez 1)\n> "))
if choice1 == 0:
print("\nListe des requêtes :")
print(" 1. Liste des guides")
print(" 2. Liste des informations des expositions permanentes")
print(
" 3. Liste des informations des expositions temporaires en cours et futures")
print(" 4. Identifications des guides d'une exposition donnée")
print(" 5. Nombre d'oeuvres et prix moyen d'acquisition des oeuvres d'une exposition donnée")
print(" 6. Liste des oeuvres appartenant au Louvre")
print(" 7. Oeuvres actuellement prêtées par le Louvre")
print(" 8. Afficher le temps moyen des prêts avec chaque musée extérieur")
print(" 9. Prix d'acquisition, nombre de restaurations, et coût cumulé des restaurations pour chaque oeuvre")
print(" 10. Nombre d'oeuvres actuellement absentes")
print(" 11. Oeuvres actuellement empruntées par le Louvre")
print(" 12. Oeuvres ayant été créées à une période donnée")
print(" 13. Nombre de créneaux d'attribution de visite d'expositions permanentes par guide")
print(" 14. Nombre d'expositions accueillies par salles\n")
choice2 = int(input("Entrer Votre choix\n> "))
print("\nInserer des données:")
print(" 20. Insertion d'un nouveau musée")
print(" 21. Insertion oeuvre néolithique")
print(" 22. Creer une nouvelle exposition permanente")
print(" 23. Insertion d'une exposition temporaire et d'oeuvres extérieures exposées")
print(" 24. Insertion d'une salle d'exposition")
print(" 25. ")
print(" 26. Insertion d'un guide et affectation à des expositions")
if choice2 == 1:
liste_guide()
choice = int(input("Entrer Votre choix\n>"))
if choice2 == 2:
liste_expos_permanentes()
if choice == 1:
liste_guide()
if choice2 == 3:
liste_expos_temporaires()
if choice == 2:
liste_expos_permanentes()
if choice2 == 4:
afficher_guide_expo()
if choice == 3:
liste_expos_temporaires()
if choice2 == 5:
info_expo()
if choice == 4:
afficher_guide_expo()
if choice2 == 6:
liste_oeuvres_louvre()
if choice == 5:
info_expo()
if choice2 == 7:
liste_oeuvre_pretees()
if choice == 6:
liste_oeuvres_louvre()
if choice2 == 8:
temp_moyen_pret()
if choice == 7:
liste_oeuvre_pretees()
if choice2 == 9:
informations_oeuvres()
if choice == 8:
temp_moyen_pret()
if choice2 == 10:
liste_oeuvres_absentes()
if choice == 9:
informations_oeuvres()
if choice2 == 11:
liste_oeuvre_empruntees()
if choice == 10:
liste_oeuvres_absentes()
if choice2 == 12:
liste_oeuvre_periode()
if choice == 11:
liste_oeuvre_empruntees()
if choice2 == 13:
nb_creneaux()
if choice == 12:
liste_oeuvre_periode()
if choice2 == 14:
nb_expos()
if choice1 == 1:
print("\nInserer des données:")
print(" 1. Insertion d'un nouveau musée")
print(" 2. Insertion oeuvre extérieure")
print(" 3. Creation d'une nouvelle exposition permanente")
print(
" 4. Insertion d'une exposition temporaire et d'oeuvres extérieures exposées")
print(" 5. Insertion d'une salle d'exposition")
print(" 6. Insertion d'un panneau")
print(" 7. Insertion d'un guide et affectation à des expositions\n")
if choice == 13:
nb_creneaux()
choice2 = int(input("Entrer Votre choix\n> "))
if choice == 14:
nb_expos()
if choice2 == 1:
insert_musee()
# requettes insertions
if choice == 20:
inserer_musee()
if choice2 == 2:
insert_oeuvreext()
if choice == 21:
inserer_neolitique()
if choice2 == 3:
insert_expoperm()
if choice == 22:
inserer_expoperm()
if choice2 == 4:
insert_expotemp()
if choice == 23:
insert_expotemp()
if choice2 == 5:
insert_salle()
if choice == 24:
insert_salle()
if choice2 == 6:
insert_panneau()
if choice == 26:
inserer_guide()
if choice2 == 7:
insert_guide()
if __name__ == '__main__':
......
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