From c125d4ad6f8da52b8c2e53d599acedef28a23a10 Mon Sep 17 00:00:00 2001 From: Rochas Date: Sat, 21 Dec 2024 13:19:31 +0100 Subject: [PATCH] =?UTF-8?q?plein=20de=20truc=20:=20uniformisation=20des=20?= =?UTF-8?q?chronom=C3=A8tres,=20ajout=20de=20requ=C3=AAte,=20print=20un=20?= =?UTF-8?q?rapport=20=C3=A0=20la=20fin=20et=20le=20sauvegarde=20dans=20un?= =?UTF-8?q?=20.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PostgreSQL.py | 22 ++++++-- main.py | 138 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 124 insertions(+), 36 deletions(-) diff --git a/PostgreSQL.py b/PostgreSQL.py index 87810c0..a9809cf 100644 --- a/PostgreSQL.py +++ b/PostgreSQL.py @@ -10,6 +10,9 @@ def connect_postgres(): ) def create_tables_postgres(): + start_time = 0 + end_time = 0 + sql_command_create_table= ( """CREATE TABLE airlines ( @@ -78,6 +81,8 @@ def create_tables_postgres(): return end_time-start_time def create_data_postgres(): + start_time = 0 + end_time = 0 sql_command_copy =( """COPY airlines FROM 'C://Users//Public//2015_Flight_Delay_and_cancellations//airlines.csv' DELIMITER ',' NULL AS ''""", """COPY airports FROM 'C://Users//Public//2015_Flight_Delay_and_cancellations//airports.csv' DELIMITER ',' NULL AS ''""", @@ -94,29 +99,36 @@ def create_data_postgres(): conn.close() except (psycopg2.DatabaseError, Exception) as error: print(error) - return end_time - start_time + return end_time-start_time def requete_postgres(str): + start_time = 0 + end_time = 0 try: with connect_postgres() as conn: with conn.cursor() as cursor: - start = time.time() + start_time = time.time() cursor.execute(str) conn.commit() - end = time.time() -start + end_time = time.time() cursor.close() conn.close() except (psycopg2.DatabaseError, Exception) as error: print(error) - return end-start + return end_time-start_time def reset_database_postgres(): + start_time = 0 + end_time = 0 try: with connect_postgres() as conn: + start_time = time.time() with conn.cursor() as cursor: cursor.execute('DROP TABLE IF EXISTS flights,airlines,airports,flights10') conn.commit() + end_time = time.time() cursor.close() conn.close() except (psycopg2.DatabaseError, Exception) as error: - print(error) \ No newline at end of file + print(error) + return end_time-start_time \ No newline at end of file diff --git a/main.py b/main.py index 1b61ff7..773e3ac 100644 --- a/main.py +++ b/main.py @@ -1,11 +1,13 @@ from MonetDB import * from PostgreSQL import * -import time +from datetime import datetime + #Bilioteques nécessaires (pour se connecter a monetDB et postgreeSQL #pip install psycopg2 #pip install pymonetdb + #Monet DB requeteSelect1MonetDB = """SELECT * FROM flights WHERE "AIRLINE" = 'AA';""" requeteSelect2MonetDB = """SELECT * FROM flights;""" @@ -16,12 +18,22 @@ requeteSelect20MonetDB = """SELECT * FROM flights WHERE "DAY" > 20;""" requeteSelect25MonetDB = """SELECT * FROM flights WHERE "DAY" > 25;""" requeteSelect30MonetDB = """SELECT * FROM flights WHERE "DAY" > 30;""" +requeteSelect5_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 5 AND "SCHEDULED_DEPARTURE"=0030;""" +requeteSelect10_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 10 AND "SCHEDULED_DEPARTURE"=0030;""" +requeteSelect15_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 15 AND "SCHEDULED_DEPARTURE"=0030;""" +requeteSelect20_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 20 AND "SCHEDULED_DEPARTURE"=0030;""" +requeteSelect25_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 25 AND "SCHEDULED_DEPARTURE"=0030;""" +requeteSelect30_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 30 AND "SCHEDULED_DEPARTURE"=0030;""" + requeteCreateTable10MonetDB = """CREATE TABLE flights10 AS SELECT * FROM FLIGHTS WHERE "DAY" > 10;""" requeteDeleteMonetDB = """DELETE FROM flights WHERE "DAY" > 10;""" requeteInsertMonetDB = """INSERT INTO flights SELECT * FROM flights10;""" -requeteDropflight10MonetDB = """DROP TABLE flights10;""" +requeteDropFlight10MonetDB = """DROP TABLE flights10;""" +requeteCopyTableMonetDB = """CREATE TABLE flights2 AS SELECT * FROM FLIGHTS;""" +requeteReplaceMonetDB = """UPDATE flights2 SET "WEATHER_DELAY" = -1 WHERE "WEATHER_DELAY" IS NULL;""" +requeteDropCopyMonetDB = """DROP TABLE flights2;""" #Postgre SQL requeteSelect1PostgreSQL = """SELECT * FROM public.flights WHERE "AIRLINE" = 'AA'""" @@ -33,19 +45,39 @@ requeteSelect20PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 20""" requeteSelect25PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 25""" requeteSelect30PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 30""" + +requeteSelect5_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 5 AND "SCHEDULED_DEPARTURE"=0030 """ +requeteSelect10_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 10 AND "SCHEDULED_DEPARTURE"=0030 """ +requeteSelect15_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 15 AND "SCHEDULED_DEPARTURE"=0030 """ +requeteSelect20_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 20 AND "SCHEDULED_DEPARTURE"=0030 """ +requeteSelect25_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 25 AND "SCHEDULED_DEPARTURE"=0030 """ +requeteSelect30_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 30 AND "SCHEDULED_DEPARTURE"=0030 """ + requeteCreateTable10PostgreSQL = """CREATE TABLE flights10 AS SELECT * FROM FLIGHTS WHERE "DAY" > 10""" requeteDeletePostgreSQL = """DELETE FROM flights WHERE "DAY" > 10""" requeteInsertPostgreSQL = """INSERT INTO flights SELECT * FROM flights10""" -requeteDropflight10PostgreSQL = """DROP TABLE flights10""" +requeteDropFlight10PostgreSQL = """DROP TABLE flights10""" + +requeteCopyTablePostgreSQL = """CREATE TABLE flights2 AS SELECT * FROM FLIGHTS""" +requeteReplacePostgreSQL = """UPDATE flights SET "WEATHER_DELAY" = -1 WHERE "WEATHER_DELAY" IS NULL""" +requeteDropCopyPostgreSQL = """DROP TABLE flights2""" + +rapport : str = "" def initMonetDB(): + global rapport + reset_data_monetdb() time = create_table_monetdb() - print("[MonetDB] create table: time = ", time, "s\n") + result = "[MonetDB] create table: time = " + str(time) + " s \n" + rapport = rapport + "\n" + result + print(result) time = load_data_monetdb() + result = "[MonetDB] load data : time = " + str(time) + " s \n" + rapport = rapport + "\n" + result + print(result) - print("[MonetDB] load data : time = ", time, "s\n") def execMonetDB(str): return requete_monetdb(str) @@ -53,17 +85,29 @@ def execMonetDB(str): def runMonetDB(): execForMonetDB(5,[requeteSelect1MonetDB]) execForMonetDB(5,[requeteSelect2MonetDB]) + execForMonetDB(5,[requeteSelect5MonetDB]) execForMonetDB(5,[requeteSelect10MonetDB]) execForMonetDB(5,[requeteSelect15MonetDB]) execForMonetDB(5,[requeteSelect20MonetDB]) execForMonetDB(5,[requeteSelect25MonetDB]) execForMonetDB(5,[requeteSelect30MonetDB]) - execForMonetDB(5,[requeteCreateTable10MonetDB,requeteDeleteMonetDB,requeteInsertMonetDB,requeteDropflight10MonetDB]) + + execForMonetDB(5,[requeteSelect5_2MonetDB]) + execForMonetDB(5,[requeteSelect10_2MonetDB]) + execForMonetDB(5,[requeteSelect15_2MonetDB]) + execForMonetDB(5,[requeteSelect20_2MonetDB]) + execForMonetDB(5,[requeteSelect25_2MonetDB]) + execForMonetDB(5,[requeteSelect30_2MonetDB]) + + execForMonetDB(5,[requeteCreateTable10MonetDB,requeteDeleteMonetDB,requeteInsertMonetDB,requeteDropFlight10MonetDB]) + #execMonetDB(requeteDropCopyMonetDB) + #execForMonetDB(5,[requeteCopyTableMonetDB,requeteReplaceMonetDB,requeteDropCopyMonetDB]) # 1.34 s #execute n fois les n requêtes def execForMonetDB(n, tabReq): + global rapport t = [0] * len(tabReq) for i in range(n) : print(i+1,"/",n) @@ -73,42 +117,60 @@ def execForMonetDB(n, tabReq): for j in range(len(tabReq)): t[j] = t[j]/n - print("[MonetDB] requete (moyenne de",n,") :", tabReq[j] , "\n time = ", t[j], "s\n") + result = "[MonetDB] requete (moyenne de " + str(n) +") : " + str(tabReq[j]) + "\n time = " + str(t[j]) + " s\n" + rapport = rapport + "\n" + result + print(result) + + def initPostgreSQL(): + global rapport reset_database_postgres() - start_time = time.time() - create_tables_postgres() - end_time = time.time() - print("[PostgreSQL] create table: time = ", (end_time - start_time), "s\n") + time = create_tables_postgres() + result = "[PostgreSQL] create table: time = " + str(time) + " s\n" + rapport = rapport + "\n" + result + print(result) - start_time = time.time() - create_data_postgres() - end_time = time.time() - print("[PostgreSQL] load data : time = ", (end_time - start_time), "s\n") + time = create_data_postgres() + result = "[PostgreSQL] load data : time = " + str(time) + " s\n" + rapport = rapport + "\n" + result + print(result) + +def initIndex(): + global rapport + time = execPostgreSQL("""CREATE INDEX idx_day ON flights ("DAY");""") + result = "[PostgreSQL] create index : time = " + str(time) + " s\n" + rapport = rapport + "\n" + result + print(result) def execPostgreSQL(str): - start_time = time.time() - requete_postgres(str) - end_time = time.time() - return end_time-start_time + return requete_postgres(str) def runPostgreSQL(): - execForPostgreSQL(5,[requeteSelect1PostgreSQL]) - execForPostgreSQL(3,[requeteSelect2PostgreSQL]) - execForPostgreSQL(2,[requeteSelect5PostgreSQL]) - execForPostgreSQL(3,[requeteSelect10PostgreSQL]) - execForPostgreSQL(3,[requeteSelect15PostgreSQL]) - execForPostgreSQL(4,[requeteSelect20PostgreSQL]) - execForPostgreSQL(4,[requeteSelect25PostgreSQL]) - execForPostgreSQL(5,[requeteSelect30PostgreSQL]) + execForPostgreSQL(1,[requeteSelect1PostgreSQL]) + execForPostgreSQL(1,[requeteSelect2PostgreSQL]) + execForPostgreSQL(1,[requeteSelect5PostgreSQL]) + execForPostgreSQL(1,[requeteSelect10PostgreSQL]) + execForPostgreSQL(1,[requeteSelect15PostgreSQL]) + execForPostgreSQL(2,[requeteSelect20PostgreSQL]) + execForPostgreSQL(2,[requeteSelect25PostgreSQL]) + execForPostgreSQL(3,[requeteSelect30PostgreSQL]) + execForPostgreSQL(5,[requeteSelect5_2PostgreSQL]) + execForPostgreSQL(5,[requeteSelect10_2PostgreSQL]) + execForPostgreSQL(5,[requeteSelect15_2PostgreSQL]) + execForPostgreSQL(5,[requeteSelect20_2PostgreSQL]) + execForPostgreSQL(5,[requeteSelect25_2PostgreSQL]) + execForPostgreSQL(5,[requeteSelect30_2PostgreSQL]) - execForPostgreSQL(3,[requeteCreateTable10PostgreSQL,requeteDeletePostgreSQL,requeteInsertPostgreSQL,requeteDropflight10PostgreSQL]) + execForPostgreSQL(1,[requeteCreateTable10PostgreSQL,requeteDeletePostgreSQL,requeteInsertPostgreSQL,requeteDropFlight10PostgreSQL]) + #execPostgreSQL(requeteDropCopyPostgreSQL) + #execForPostgreSQL(5,[requeteCopyTablePostgreSQL,requeteReplacePostgreSQL,requeteDropCopyPostgreSQL]) # 11.97 s # execute n fois les n requêtes def execForPostgreSQL(n, tabReq): + global rapport t = [0] * len(tabReq) for i in range(n): print(i+1,"/",n) @@ -118,13 +180,27 @@ def execForPostgreSQL(n, tabReq): for j in range(len(tabReq)): t[j] = t[j] / n - print("[PostgreSQL] requete (moyenne de", n, ") :", tabReq[j], "\n time = ", t[j], "s\n") + result = "[PostgreSQL] requete (moyenne de " + str(n) +") : " + str(tabReq[j]) + "\n time = " + str(t[j]) + " s\n" + rapport = rapport + "\n" + result + print(result) if __name__ == '__main__': + initMonetDB() runMonetDB() - #initPostgreSQL() + rapport += "\n" + + initPostgreSQL() + #initIndex() + runPostgreSQL() - #runPostgreSQL() + print("/////////////////////////////////////////////////////////////") + print(rapport) + print("/////////////////////////////////////////////////////////////") + + date = datetime.now() + nom_fichier = "result" + date.strftime("%d_%m_%y_%H_%M_%S") + ".txt" #un nom de fichier unique pour ne pas écraser les anciens résultats + with open(nom_fichier, 'w') as fichier: + fichier.write(rapport)