SQLAlchemy one
和first
方法之间有什么区别
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] 删除。
我来说两句