def get_user_by_email(self, email: str) -> User:
     sql = "SELECT * FROM users WHERE email = %s"
     val = (email, )
     self.cursor.execute(sql, val)
     resultset = self.cursor.fetchall()
     if self.cursor.rowcount > 0:
         user = User(
             username=resultset[0][1],
             password_hash=resultset[0][2],
             email=resultset[0][3],
         )
         user._id = resultset[0]
         return user
     return
 def _load_users(self):
     if not os.path.exists(self._user_filepath):
         return
     with open(self._user_filepath, "r") as infile:
         data: List[dict] = None
         try:
             data = json.load(infile)
         except Exception as err:
             print("user.dat: File was Empty")
             return
         for d in data:
             user = User(
                 username=d["_username"],
                 email=d["_email"],
                 password_hash=d["_password_hash"],
             )
             user._id = d["_id"]
             user.follows = d["follows"]
             if user._id > self._accumulate_user_id:
                 self._accumulate_user_id = user._id
             self._users.append(user)
     print("user.dat: File Loaded")
 def create_user(self, user: User) -> User:
     self._accumulate_user_id += 1
     user._id = self._accumulate_user_id
     self._users.append(user)
     self._save_users()
     return user