Flask使用get_or_404查询用户时报错,如何正确使用该方法?
正确使用Flask-SQLAlchemy的404查询方法
get_or_404() 是SQLAlchemy专为主键查询设计的方法,它默认会把传入的值匹配模型的主键字段(通常是id),而且不支持关键字参数,这就是你遇到两种错误的原因。
要实现按username查询且无结果时抛出404,正确写法是结合filter_by()和first_or_404():
user = User.query.filter_by(username=username).first_or_404()
这个写法和你原本的filter_by(...).first()逻辑一致,但会在查询不到数据时自动触发404错误响应,完全满足你的需求。
如果你的User模型主键是username(而非默认的id),那可以直接用User.query.get_or_404(username),但显然你的模型主键是id,所以这种场景不适用。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

