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

问题描述 投票:23回答:1

SQLAlchemy中的onefirst方法有什么区别

python sqlalchemy flask-sqlalchemy
1个回答
42
投票

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

Query.first()返回可能更大的结果集中的第一个,如果没有结果,则返回None。不会有例外。

Query.one()的文档:

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

Query.first()

如果结果不包含任何行,则返回此Query的第一个结果或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]
© www.soinside.com 2019 - 2024. All rights reserved.