Ошибка атрибута: объект типа ‘Auth’ не имеет атрибута ‘query’

#python #flask-sqlalchemy

#python #flask-sqlalchemy

Вопрос:

Итак, я использую этот метод для нескольких проектов, но по какой-то причине я получаю сообщение об ошибке.

Задействованный код:

 class Auth(db.Column):
    __tablename__ = 'ezauth'
    id = db.Column(db.Integer, primary_key=True, nullable=False)
    username = db.Column(db.String, nullable=False)
    email = db.Column(db.String, nullable=False)
    password = db.Column(db.String, nullable=False)
    confirmed = db.Column(db.Boolean, nullable=False, default=False)

    def __repr__(self):
        return f"Auth(username='{self.username}', email='{self.email}', password='{self.password}'"
 

и

 @app.route('/api/login', methods=['POST'])
def apilogin():
    if request.method == 'POST':
        email = request.form.get('email')
        password = request.form.get('password')
        if email != None and password != None:
            value1 = Auth.query.filter_by(email=email).first()
            if value1 != None:
                db_pass = value1.password
                oid = value1.id
                if sha256_crypt.verify(str(password), db_pass):
                    token = create_token()
                    tokendb = Token(token=token, oid=oid)
                    return Response('{"success": true, "message": "Logged in", "token": "'   str(token)   '"}', status=200, mimetype='application/json')
                else:
                    return Response('{"success": false, "message": "Incorrect password"}', status=400, mimetype='application/json')
            else:
                return Response('{"success": false, "message": "Email not registered"}', status=400, mimetype='application/json')
        else:
            return Response('{"success": false, "message": "Wrong form parameters"}', status=400, mimetype='application/json')
 

Но Auth.query.all() (или любой другой вариант Auth.query ) по какой-то причине не работает, он возвращает AttributeError: type object 'Auth' has no attribute 'query' ошибку. Это работало в предыдущих проектах, но не в этом.

Комментарии:

1. Auth.query.all() В предоставленном вами коде его нет. Вы также делали это в своем коде Auth.query.filter_by(email=email).first() , вызывает ли это ошибку.

2. @Nerveless_child Я использовал Auth.query.all() в качестве примера, речь идет об атрибуте «query», а не о чем-либо другом (например filter_by() , или first() вместо all() ).

3. Вы уверены Auth , что он предназначен для подкласса db.Column вместо db.Model ?

4. Я считаю, что это причина вашей ошибки.

5. @Nerveless_child черт, думаю, я просто тупой. Спасибо, что заметили!