[英]How can I invoke an SQLAlchemy query with limit of 1?
我有这样的代码:
thing = thing.query.filter_by(id=thing_id).limit(1).all()[0]
all()[0]
在limit(1)
情况下感觉有点混乱和多余。 是否有更简洁(和/或其他最佳)的方法来实现这一目标?
的确,Jwodder的答案将以标量形式返回第一个结果,但是SQLAlchemy提供了其他两个更适合您需要的函数,因此,我列出并解释了所有这些函数:
first()
将拉出返回的第一行;如果不返回任何行,则返回None
。
one()
将拉出1行,但必须仅拉出一行:如果从查询返回的行数不是1,它将出错。
one_or_none()
本质上将执行one()
,但是如果没有返回任何行,则不会出错,将返回None
。 如果返回多行,仍然会出错。
所有这些文档都可以在以下位置找到: http : //docs.sqlalchemy.org/en/latest/orm/query.html
首先,同意并支持其他答案。
但是,您的查询似乎是针对primary key
列的。 如果是这种情况,进行这种查询的最直接方法就是简单地调用get()
:
thing = Thing.query.get(thing_id)
SQLAlchemy 核心为查询提供了一个.limit(1) 运算符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.