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:
@@ -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
138
main.py
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user