Ree*_*ale 27 python sqlalchemy flask-sqlalchemy
SQLAlchemy one和first方法之间有什么区别
Mar*_*ers 47
Query.one()要求结果集中只有一个结果; 如果数据库返回0或2或更多结果并且将引发异常,则会出错.
Query.first()返回可能更大的结果集中的第一个,或者LIMIT 1如果没有结果.不会有例外.
从以下文档None:
只返回一个结果或引发异常.
来自Query.one():
如果结果不包含任何行,则返回此Query的第一个结果或None.
(强调我的).
就Python列表而言,Query.first()将是:
def one(lst):
if not lst:
raise NoResultFound
if len(lst) > 1:
raise MultipleResultsFound
return lst[0]
Run Code Online (Sandbox Code Playgroud)
而one()将是:
def first(lst):
return lst[0] if lst else None
Run Code Online (Sandbox Code Playgroud)
还有一种first()方法,只有在查询有多个结果时才会引发异常.否则它将返回单个结果,或者Query.one_or_none()如果没有结果.
在列表中,这相当于:
def one_or_none(lst):
if not lst:
return None
if len(lst) > 1:
raise MultipleResultsFound
return lst[0]
Run Code Online (Sandbox Code Playgroud)