135 lines
4.2 KiB
Python
135 lines
4.2 KiB
Python
import time
|
|
import psycopg2
|
|
|
|
def connect_postgres():
|
|
return psycopg2.connect(
|
|
host="localhost",
|
|
database="postgres",
|
|
user="postgres",
|
|
password="1"
|
|
)
|
|
|
|
def create_tables_postgres():
|
|
start_time = 0
|
|
end_time = 0
|
|
|
|
sql_command_create_table= (
|
|
"""CREATE TABLE airlines
|
|
(
|
|
"IATA_CODE" VARCHAR(2),
|
|
"AIRLINE" VARCHAR(30)
|
|
)
|
|
""",
|
|
"""CREATE TABLE airports
|
|
(
|
|
"IATA_CODE" VARCHAR(3),
|
|
"AIRPORT" VARCHAR(100),
|
|
"CITY" VARCHAR(40),
|
|
"STATE" VARCHAR(2),
|
|
"COUNTRY" VARCHAR(40),
|
|
"LATITUDE" REAL,
|
|
"LONGITUDE" REAL
|
|
)
|
|
""",
|
|
"""CREATE TABLE flights
|
|
(
|
|
"YEAR" INTEGER,
|
|
"MONTH" INTEGER,
|
|
"DAY" INTEGER,
|
|
"DAY_OF_WEEK" INTEGER,
|
|
"AIRLINE" VARCHAR(2),
|
|
"FLIGHT_NUMBER" INTEGER,
|
|
"TAIL_NUMBER" VARCHAR(6),
|
|
"ORIGIN_AIRPORT" VARCHAR(5),
|
|
"DESTINATION_AIRPORT" VARCHAR(5),
|
|
"SCHEDULED_DEPARTURE" INTEGER,
|
|
"DEPARTURE_TIME" INTEGER,
|
|
"DEPARTURE_DELAY" INTEGER,
|
|
"TAXI_OUT" INTEGER,
|
|
"WHEELS_OFF" INTEGER,
|
|
"SCHEDULED_TIME" INTEGER,
|
|
"ELAPSED_TIME" INTEGER,
|
|
"AIR_TIME" INTEGER,
|
|
"DISTANCE" INTEGER,
|
|
"WHEELS_ON" INTEGER,
|
|
"TAXI_IN" INTEGER,
|
|
"SCHEDULED_ARRIVAL" INTEGER,
|
|
"ARRIVAL_TIME" INTEGER,
|
|
"ARRIVAL_DELAY" INTEGER,
|
|
"DIVERTED" INTEGER,
|
|
"CANCELLED" INTEGER,
|
|
"CANCELLATION_REASON" VARCHAR(1),
|
|
"AIR_SYSTEM_DELAY" INTEGER,
|
|
"SECURITY_DELAY" INTEGER,
|
|
"AIRLINE_DELAY" INTEGER,
|
|
"LATE_AIRCRAFT_DELAY" INTEGER,
|
|
"WEATHER_DELAY" INTEGER
|
|
)
|
|
""")
|
|
try:
|
|
with connect_postgres() as conn:
|
|
with conn.cursor() as cursor:
|
|
start_time = time.time()
|
|
for command in sql_command_create_table:
|
|
cursor.execute(command)
|
|
conn.commit()
|
|
end_time = time.time()
|
|
cursor.close()
|
|
conn.close()
|
|
except (psycopg2.DatabaseError, Exception) as error:
|
|
print(error)
|
|
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 ''""",
|
|
"""COPY flights FROM 'C://Users//Public//2015_Flight_Delay_and_cancellations//flights.csv' DELIMITER ',' NULL AS ''""")
|
|
try:
|
|
with connect_postgres() as conn:
|
|
with conn.cursor() as cursor:
|
|
start_time = time.time()
|
|
for command in sql_command_copy:
|
|
cursor.execute(command)
|
|
conn.commit()
|
|
end_time = time.time()
|
|
cursor.close()
|
|
conn.close()
|
|
except (psycopg2.DatabaseError, Exception) as error:
|
|
print(error)
|
|
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.time()
|
|
cursor.execute(str)
|
|
conn.commit()
|
|
end_time = time.time()
|
|
size = cursor.rowcount
|
|
cursor.close()
|
|
conn.close()
|
|
except (psycopg2.DatabaseError, Exception) as error:
|
|
print(error)
|
|
return end_time-start_time, size
|
|
|
|
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,flights2')
|
|
conn.commit()
|
|
end_time = time.time()
|
|
cursor.close()
|
|
conn.close()
|
|
except (psycopg2.DatabaseError, Exception) as error:
|
|
print(error)
|
|
return end_time-start_time |