.one()和.first()有什么区别

Reena Shirale:

SQLAlchemy onefirst方法之间有什么区别

马丁·彼得斯(Martijn Pieters):

Query.one()要求结果集中只有一个结果;如果数据库返回0或2个或更多结果,并且将引发异常,则为错误。

Query.first()返回可能更大的结果集中的第一个(添加LIMIT 1到查询中),或者返回None没有结果的情况。没有例外。

从文档中Query.one()

仅返回一个结果或引发异常。

和来自Query.first()

返回此查询的第一个结果,如果结果不包含任何行,则返回None

(强调我的)。

就Python列表而言,one()将是:

def one(lst):
    if not lst:
        raise NoResultFound
    if len(lst) > 1:
        raise MultipleResultsFound
    return lst[0]

first()将是:

def first(lst):
    return lst[0] if lst else None

还有一种Query.one_or_none()方法,仅当查询有多个结果时才会引发异常。否则,它将返回单个结果,或者None如果没有结果。

用列表术语来说,相当于:

def one_or_none(lst):
    if not lst:
        return None
    if len(lst) > 1:
        raise MultipleResultsFound
    return lst[0]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章