'Can someone tell me why SqlAlchemy is showing me this error.?

Can anyone please where am i doing wrong? Can anyone please where am i doing wrong? Can anyone please where am i doing wrong? Can anyone please where am i doing wrong?

@app.route("/userLogin", methods=['POST'])
def userLogin():
    userr = request.json['email']
    user = db.session.query(Users).filter_by(email=userr).first()
    if user:
        if bcrypt.hashpw(request.json['password'].encode('utf-8'), user[4]) == user[4]:
            access_token = create_access_token(identity=request.json['email'])
            user['tokens'].append({'token': str(access_token)})
            db.session.add(user)
            db.session.commit()
            return jsonify(token=str(access_token)), 201
    return jsonify(message='Invalid Username/Password'), 401

Error:

File "C:\Users\PROFESSOR\Desktop\WebDev Project\Back-end\ven\lib\site-packages\flask\app.py", 
line 1509, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "c:\Users\PROFESSOR\Desktop\WebDev Project\Back-end\Api\views.py", line 60, in userLogin
if bcrypt.hashpw(request.json['password'].encode('utf-8'), user[4]) == user[4]:
TypeError: 'Users' object is not subscriptable


Solution 1:[1]

In your code, you are treating the user object like a dictionary and trying to add or use values from it. You cant do that. You shouldnt use user[4] or any other such subscripting of user object in your code.

@app.route("/userLogin", methods=['POST'])
def userLogin():
    userr = request.json['email']
    user = db.session.query(Users).filter_by(email=userr).first()
    if user:
        if bcrypt.hashpw(request.json['password'].encode('utf-8'), user[4]) == 
            user[4]:
        access_token = create_access_token(identity=request.json['email'])
        user['tokens'].append({'token': str(access_token)}) 
        db.session.add(user)
        db.session.commit()
        return jsonify(token=str(access_token)), 201
    return jsonify(message='Invalid Username/Password'), 401

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Harris Minhas