plein de truc : uniformisation des chronomètres, ajout de requête, print un rapport à la fin et le sauvegarde dans un .txt

This commit is contained in:
Rochas
2024-12-21 13:19:31 +01:00
parent dc0715b5c5
commit c125d4ad6f
2 changed files with 124 additions and 36 deletions

View File

@@ -10,6 +10,9 @@ def connect_postgres():
) )
def create_tables_postgres(): def create_tables_postgres():
start_time = 0
end_time = 0
sql_command_create_table= ( sql_command_create_table= (
"""CREATE TABLE airlines """CREATE TABLE airlines
( (
@@ -78,6 +81,8 @@ def create_tables_postgres():
return end_time-start_time return end_time-start_time
def create_data_postgres(): def create_data_postgres():
start_time = 0
end_time = 0
sql_command_copy =( sql_command_copy =(
"""COPY airlines FROM 'C://Users//Public//2015_Flight_Delay_and_cancellations//airlines.csv' DELIMITER ',' NULL AS ''""", """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 ''""", """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() conn.close()
except (psycopg2.DatabaseError, Exception) as error: except (psycopg2.DatabaseError, Exception) as error:
print(error) print(error)
return end_time - start_time return end_time-start_time
def requete_postgres(str): def requete_postgres(str):
start_time = 0
end_time = 0
try: try:
with connect_postgres() as conn: with connect_postgres() as conn:
with conn.cursor() as cursor: with conn.cursor() as cursor:
start = time.time() start_time = time.time()
cursor.execute(str) cursor.execute(str)
conn.commit() conn.commit()
end = time.time() -start end_time = time.time()
cursor.close() cursor.close()
conn.close() conn.close()
except (psycopg2.DatabaseError, Exception) as error: except (psycopg2.DatabaseError, Exception) as error:
print(error) print(error)
return end-start return end_time-start_time
def reset_database_postgres(): def reset_database_postgres():
start_time = 0
end_time = 0
try: try:
with connect_postgres() as conn: with connect_postgres() as conn:
start_time = time.time()
with conn.cursor() as cursor: with conn.cursor() as cursor:
cursor.execute('DROP TABLE IF EXISTS flights,airlines,airports,flights10') cursor.execute('DROP TABLE IF EXISTS flights,airlines,airports,flights10')
conn.commit() conn.commit()
end_time = time.time()
cursor.close() cursor.close()
conn.close() conn.close()
except (psycopg2.DatabaseError, Exception) as error: except (psycopg2.DatabaseError, Exception) as error:
print(error) print(error)
return end_time-start_time

138
main.py
View File

@@ -1,11 +1,13 @@
from MonetDB import * from MonetDB import *
from PostgreSQL import * from PostgreSQL import *
import time from datetime import datetime
#Bilioteques nécessaires (pour se connecter a monetDB et postgreeSQL #Bilioteques nécessaires (pour se connecter a monetDB et postgreeSQL
#pip install psycopg2 #pip install psycopg2
#pip install pymonetdb #pip install pymonetdb
#Monet DB #Monet DB
requeteSelect1MonetDB = """SELECT * FROM flights WHERE "AIRLINE" = 'AA';""" requeteSelect1MonetDB = """SELECT * FROM flights WHERE "AIRLINE" = 'AA';"""
requeteSelect2MonetDB = """SELECT * FROM flights;""" requeteSelect2MonetDB = """SELECT * FROM flights;"""
@@ -16,12 +18,22 @@ requeteSelect20MonetDB = """SELECT * FROM flights WHERE "DAY" > 20;"""
requeteSelect25MonetDB = """SELECT * FROM flights WHERE "DAY" > 25;""" requeteSelect25MonetDB = """SELECT * FROM flights WHERE "DAY" > 25;"""
requeteSelect30MonetDB = """SELECT * FROM flights WHERE "DAY" > 30;""" 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;""" requeteCreateTable10MonetDB = """CREATE TABLE flights10 AS SELECT * FROM FLIGHTS WHERE "DAY" > 10;"""
requeteDeleteMonetDB = """DELETE FROM flights WHERE "DAY" > 10;""" requeteDeleteMonetDB = """DELETE FROM flights WHERE "DAY" > 10;"""
requeteInsertMonetDB = """INSERT INTO flights SELECT * FROM flights10;""" 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 #Postgre SQL
requeteSelect1PostgreSQL = """SELECT * FROM public.flights WHERE "AIRLINE" = 'AA'""" 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""" requeteSelect25PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 25"""
requeteSelect30PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 30""" 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""" requeteCreateTable10PostgreSQL = """CREATE TABLE flights10 AS SELECT * FROM FLIGHTS WHERE "DAY" > 10"""
requeteDeletePostgreSQL = """DELETE FROM flights WHERE "DAY" > 10""" requeteDeletePostgreSQL = """DELETE FROM flights WHERE "DAY" > 10"""
requeteInsertPostgreSQL = """INSERT INTO flights SELECT * FROM flights10""" 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(): def initMonetDB():
global rapport
reset_data_monetdb() reset_data_monetdb()
time = create_table_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() 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): def execMonetDB(str):
return requete_monetdb(str) return requete_monetdb(str)
@@ -53,17 +85,29 @@ def execMonetDB(str):
def runMonetDB(): def runMonetDB():
execForMonetDB(5,[requeteSelect1MonetDB]) execForMonetDB(5,[requeteSelect1MonetDB])
execForMonetDB(5,[requeteSelect2MonetDB]) execForMonetDB(5,[requeteSelect2MonetDB])
execForMonetDB(5,[requeteSelect5MonetDB]) execForMonetDB(5,[requeteSelect5MonetDB])
execForMonetDB(5,[requeteSelect10MonetDB]) execForMonetDB(5,[requeteSelect10MonetDB])
execForMonetDB(5,[requeteSelect15MonetDB]) execForMonetDB(5,[requeteSelect15MonetDB])
execForMonetDB(5,[requeteSelect20MonetDB]) execForMonetDB(5,[requeteSelect20MonetDB])
execForMonetDB(5,[requeteSelect25MonetDB]) execForMonetDB(5,[requeteSelect25MonetDB])
execForMonetDB(5,[requeteSelect30MonetDB]) 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 #execute n fois les n requêtes
def execForMonetDB(n, tabReq): def execForMonetDB(n, tabReq):
global rapport
t = [0] * len(tabReq) t = [0] * len(tabReq)
for i in range(n) : for i in range(n) :
print(i+1,"/",n) print(i+1,"/",n)
@@ -73,42 +117,60 @@ def execForMonetDB(n, tabReq):
for j in range(len(tabReq)): for j in range(len(tabReq)):
t[j] = t[j]/n 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(): def initPostgreSQL():
global rapport
reset_database_postgres() reset_database_postgres()
start_time = time.time() time = create_tables_postgres()
create_tables_postgres() result = "[PostgreSQL] create table: time = " + str(time) + " s\n"
end_time = time.time() rapport = rapport + "\n" + result
print("[PostgreSQL] create table: time = ", (end_time - start_time), "s\n") print(result)
start_time = time.time() time = create_data_postgres()
create_data_postgres() result = "[PostgreSQL] load data : time = " + str(time) + " s\n"
end_time = time.time() rapport = rapport + "\n" + result
print("[PostgreSQL] load data : time = ", (end_time - start_time), "s\n") 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): def execPostgreSQL(str):
start_time = time.time() return requete_postgres(str)
requete_postgres(str)
end_time = time.time()
return end_time-start_time
def runPostgreSQL(): def runPostgreSQL():
execForPostgreSQL(5,[requeteSelect1PostgreSQL]) execForPostgreSQL(1,[requeteSelect1PostgreSQL])
execForPostgreSQL(3,[requeteSelect2PostgreSQL]) execForPostgreSQL(1,[requeteSelect2PostgreSQL])
execForPostgreSQL(2,[requeteSelect5PostgreSQL])
execForPostgreSQL(3,[requeteSelect10PostgreSQL])
execForPostgreSQL(3,[requeteSelect15PostgreSQL])
execForPostgreSQL(4,[requeteSelect20PostgreSQL])
execForPostgreSQL(4,[requeteSelect25PostgreSQL])
execForPostgreSQL(5,[requeteSelect30PostgreSQL])
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 # execute n fois les n requêtes
def execForPostgreSQL(n, tabReq): def execForPostgreSQL(n, tabReq):
global rapport
t = [0] * len(tabReq) t = [0] * len(tabReq)
for i in range(n): for i in range(n):
print(i+1,"/",n) print(i+1,"/",n)
@@ -118,13 +180,27 @@ def execForPostgreSQL(n, tabReq):
for j in range(len(tabReq)): for j in range(len(tabReq)):
t[j] = t[j] / n 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__': if __name__ == '__main__':
initMonetDB() initMonetDB()
runMonetDB() 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)