Python 按模型函数过滤sqlalchemy查询

Python 按模型函数过滤sqlalchemy查询,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,考虑下面的炼金术模型 我想找到与API键匹配的模型,但该键正在被散列 class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) api_key = db.Column(db.String(50), unique=True, nullable=True) def get_api_key(self): key = secrets.token_u

考虑下面的炼金术模型

我想找到与API键匹配的模型,但该键正在被散列

class User(db.Model, UserMixin):

    id = db.Column(db.Integer, primary_key=True)
    api_key = db.Column(db.String(50), unique=True, nullable=True)    

    def get_api_key(self):    
        key = secrets.token_urlsafe(32)
        self.api_key = bcrpyt.generate_password_hash(key).decode("utf-8")
        db.session.commit()
        return key

    def check_api_key(self, passw):    
        if bcrpyt.check_password_hash(self.api_key, passw):
            return True
        else:
            return False
我原以为这样行得通,但我错了

api = User.query.filter_by(id=1).first().get_api_key()

User.query.filter(User.check_api_key(api)).first()
错误是

TypeError: check_api_key() missing 1 required positional argument: 'passw'
这个解决方案是可行的,但是如果有很多用户需要过滤,那么可能会变得非常昂贵

users = User.query.all()
for us in users:
    if us.check_api_key(api):
        print("Found")
有人能建议正确的方法吗