我有这样的代码:
thing = thing.query.filter_by(id=thing_id).limit(1).all()[0]
Run Code Online (Sandbox Code Playgroud)
all()[0]在这种limit(1)情况下感觉有点混乱和多余。有没有更简洁(和/或其他最佳方式)的方法来实现这一目标?
有first():
first()应用限制1并以标量形式返回第一个结果
从而:
thing = thing.query.filter_by(id=thing_id).first()
Run Code Online (Sandbox Code Playgroud)
小智 5
的确,Jwodder的答案将以标量形式返回第一个结果,但是SQLAlchemy提供了其他两个更适合您需要的函数,因此,我列出并解释了所有这些函数:
first()将拉出返回的第一行,或者None如果不返回任何行。
one() 将拉1行,但它只能拉1行:如果查询返回的行数不是1,它将出错。
one_or_none()本质上会执行one(),但是None如果没有返回任何行,则不会出错而返回。如果返回多行,仍然会出错。
所有这些文档都可以在这里找到:http : //docs.sqlalchemy.org/en/latest/orm/query.html
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |