В чем разница между .one() и .first()

В чем разница между методами one и first в SQLAlchemy

Ответ 1

Query.one() требует, чтобы в результирующем наборе был только один результат; это ошибка, если база данных возвращает 0 или 2 или более результатов, и будет создано исключение.

Query.first() возвращает первый из потенциально большего набора результатов или 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]

while first() будет:

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