В чем разница между методами one
и first
в SQLAlchemy
В чем разница между .one() и .first()
Ответ 1
Query.one()
требует, чтобы в результирующем наборе был только один результат; это ошибка, если база данных возвращает 0 или 2 или более результатов, и будет создано исключение.
Query.first()
возвращает первый из потенциально большего набора результатов или None
, если результатов не было. Никаких исключений не будет.
Из документации для Query.one()
:
Вернуть ровно один результат или создать исключение.
Вернуть первый результат этого запроса или 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