def post(self): args = parser.parse_args() user = User.query.filter_by(name=args["name"].lower()).first() if user == None: status = { "success": False, "user": args["name"].lower(), "score": args["score"], "message": "User does not exist" } return status, 422 # Check if the user's score exists score = Score.query.filter_by(user=user).first() if score == None: # The user's score does not exist, add new score = Score(score=int(args["score"]), user=user) else: score.score = int(args["score"]) db.session.add(score) try: db.session.commit() status = { "success": True, "user": args["name"].lower(), "score": args["score"] } except Exception as _e: # TODO: Log the exception # log your exception in the way you want -> log to file, log as error with default logging, send by email. It's upon you db.session.rollback() db.session.flush() # for resetting non-commited .add() status = { "success": False, "user": args["name"].lower(), "score": args["score"] } return status, 201