如何调用限制为1的SQLAlchemy查询?

Joh*_*hir 1 python sqlalchemy

我有这样的代码:

thing = thing.query.filter_by(id=thing_id).limit(1).all()[0]
Run Code Online (Sandbox Code Playgroud)

all()[0]在这种limit(1)情况下感觉有点混乱和多余。有没有更简洁(和/或其他最佳方式)的方法来实现这一目标?

jwo*_*der 5

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