Python 按模型函数过滤sqlalchemy查询
考虑下面的炼金术模型 我想找到与API键匹配的模型,但该键正在被散列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
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")
有人能建议正确的方法吗