繁体   English   中英

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

[英]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)情况下感觉有点混乱和多余。 是否有更简洁(和/或其他最佳)的方法来实现这一目标?

first()

first()应用一个限制,并将第一个结果作为标量返回

从而:

thing = thing.query.filter_by(id=thing_id).first()

的确,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM