Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在SQLAlchemy中查找一个项目的最佳实践_Python_Rest_Sqlalchemy - Fatal编程技术网

Python 在SQLAlchemy中查找一个项目的最佳实践

Python 在SQLAlchemy中查找一个项目的最佳实践,python,rest,sqlalchemy,Python,Rest,Sqlalchemy,这些选项中有一个比另一个好吗?有这样做的最佳实践吗?请注意,我有兴趣知道什么是最佳实践,可能不是这些。第一,捕捉异常并在那里做些什么?获取None对象并使用if语句处理是否更好?有更好的选择吗 选择1 session=self.session 尝试: user=session.queryUser.filterUser.id==user\u id.one 返回用户 除Noresults外,发现为e: 会话.回滚 在这里,我实际上正在处理这个问题,并返回一个404未找到 未找到self.handle

这些选项中有一个比另一个好吗?有这样做的最佳实践吗?请注意,我有兴趣知道什么是最佳实践,可能不是这些。第一,捕捉异常并在那里做些什么?获取None对象并使用if语句处理是否更好?有更好的选择吗

选择1

session=self.session 尝试: user=session.queryUser.filterUser.id==user\u id.one 返回用户 除Noresults外,发现为e: 会话.回滚 在这里,我实际上正在处理这个问题,并返回一个404未找到 未找到self.handle\u 除SQLAlchemyError作为e外: self.handle\u内部错误 最后: session.close 选择2

session=self.session 尝试: user=session.queryUser.filterUser.id==object\u id.one\u或\u none 如果用户为无: 在这里,我实际上正在处理这个问题,并返回一个404未找到 未找到self.handle\u 其他: 返回用户 除SQLAlchemyError作为e外: self.handle\u内部错误 最后: session.close
谢谢

没有这样的最佳实践。以下所有函数抛出异常的方式都不同。这真的取决于需求。您可以使用:

其中一个将为您提供唯一的项,但会为具有零个或多个结果的查询引发异常

first将返回第一个结果,如果没有结果,则返回None

只有当查询有多个结果时,一个\u或\u none才会引发异常。否则它将返回单个结果,如果没有结果,则返回None


所以,选择你想要的,然后使用正确的。

@Nahuel请告诉我答案是否有用?