SQLAlchemyのone
メソッドとfirst
メソッドの違いは何ですか
Query.one()
では、結果セットにoneの結果のみが必要です。データベースが0または2つ以上の結果を返すとエラーになり、例外が発生します。
Query.first()
は、潜在的に大きい結果セット(クエリに_LIMIT 1
_を追加)の最初を返します。結果がなかった場合はNone
を返します。例外は発生しません。
Query.one()
のドキュメントから:
正確に1つの結果を返すか、例外を発生させます
および 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]
_