import psycopg2 from psycopg2.extras import RealDictCursor import os def connect(): rds_host = os.environ['DATABASE_HOST'] db_user = os.environ['DATABASE_USER'] password = os.environ['DATABASE_PASSWORD'] db_name = os.environ['DATABASE_DB_NAME'] port = os.environ['DATABASE_PORT'] return psycopg2.connect(sslmode="require", host=rds_host, user=db_user, password=password, dbname=db_name, connect_timeout=10000, port=port, keepalives_interval=30) class User: def __init__(self, db=connect()): try: self.cursor = db.cursor(cursor_factory=RealDictCursor) except: db=connect() self.cursor = db.cursor(cursor_factory=RealDictCursor) self.db = db self.user = None self.email = None def add(self, fname, lname, email, password): sql = f"INSERT INTO Users(fname, lname, email, password) VALUES(%s,%s,%s,%s);" data=(fname, lname, email, password) try: cur = self.db.cursor(cursor_factory=RealDictCursor) cur.execute(sql, data) except: self.db=connect() self.cursor = self.db.cursor(cursor_factory=RealDictCursor) cur = self.cursor cur.execute(sql, data) self.db.commit() cur.close() self.user = lname + ", " + fname self.email = email def get(self, email): sql = "select fname, lname, email, id from Users where email='{}'".format(email) try: cur = self.db.cursor(cursor_factory=RealDictCursor) cur.execute(sql) except: self.db=connect() self.cursor = self.db.cursor(cursor_factory=RealDictCursor) cur = self.cursor cur.execute(sql) return cur.fetchall() def verify(self, email ,password): sql = "SELECT email, password FROM Users WHERE email='{}' AND password='{}'".format(email, password) try: cur = self.db.cursor(cursor_factory=RealDictCursor) cur.execute(sql) except: self.db=connect() self.cursor = self.db.cursor(cursor_factory=RealDictCursor) cur = self.cursor cur.execute(sql) result = cur.fetchall() self.db.commit() cur.close() row_count = len(result) if row_count == 1 : return True else: return False