-
Notifications
You must be signed in to change notification settings - Fork 0
/
SessionStats_DB_class.py
81 lines (70 loc) · 2.94 KB
/
SessionStats_DB_class.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import psycopg2
#from dotenv import load_dotenv
import os
#load_dotenv() # load enviroment variables
class SessionStatsDB:
def __init__(self):
# connection info
# TODO #1 In the future heroku periodically changes DB credentials, find way to go about this
self.host = os.getenv("HOST")
self.database = os.getenv("DATABASE")
self.user = os.getenv("USER")
self.password = os.getenv("PASSWORD")
# insert individual battle stats into DB, single execution statement
def insertBattle(self, battle_time, tank_id, tank_name, damage, wn8, kills, xp, win):
query = f"""
INSERT INTO session_stats(pst_battle_time, tank_id, tank_name, damage, wn8, kills, xp, win)
VALUES('{battle_time}', {tank_id}, '{tank_name}', {damage}, {wn8}, {kills}, {xp}, {win})
RETURNING *;
"""
try:
# connect to the PostgreSQL server
print('Connecting to the PostgreSQL database to insert battle.')
conn = psycopg2.connect(
host = self.host,
database = self.database,
user = self.user,
password = self.password)
# create a cursor
cur = conn.cursor()
cur.execute(query)
conn.commit()
# close the communication with the PostgreSQL
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print("-----------------------------------")
print(error)
print("-----------------------------------")
finally:
if conn is not None:
conn.close()
print('Database connection for insertBattle closed.')
# returns best battle in the CURRENT SESSION (same as current date), ordered data in a tuple
def bestBattle(self):
query = f"""
SELECT tank_name, damage, wn8, pst_battle_time, kills, win
FROM session_stats
WHERE battle_date = CURRENT_DATE
ORDER BY damage DESC;
"""
try:
# connect to the PostgreSQL server
print('Connecting to the PostgreSQL database to collect best battle.')
conn = psycopg2.connect(
host = self.host,
database = self.database,
user = self.user,
password = self.password)
cur = conn.cursor()
cur.execute(query)
best_game = cur.fetchone()
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print("-----------------------------------")
print(error)
print("-----------------------------------")
finally:
if conn is not None:
conn.close()
print('Database connection for insertBattle closed.')
return best_game