gpt4 book ai didi

Django:捕获完整性错误与 qs.exists() 哪个更有效?

转载 作者:行者123 更新时间:2023-12-05 07:32:10 25 4
gpt4 key购买 nike

检查是否存在相同数据的两种方法:

1

try:
MyModel.objects.create(
field1=field1_value,
field2=field1_value,
)
except IntegrityError:
# doing something

2

qs = MyModel.objects.filter(field1=field1_value, field2=field2_value)
if qs.exists():
# doing something

我想知道哪种方法更适合检查完整性。

最佳答案

Try-Except 不如 if-else 语句高效...但它更理想,因为它的多功能性和以下要点...所以答案确实取决于您的用例...如果您正在尝试运行高性能实时应用程序,则 if-else 更好,但如果您正在编写一个通用库,您不知道会发生什么故障或如何如果用户想要处理它,那么 Try-Except 更胜一筹。

您可以访问 Finally带有 Try-Except block 。

Except 不会在遇到错误时阻止代码停止,如果您处理的是窄异常类型,这尤其可取。

此外,您不必像在 if else 语句中那样预测异常何​​时会在代码块中发生。那就是..

try:
# do some things before
MyModel.objects.create(
field1=field1_value,
field2=field1_value,
)
# do some things after
except IntegrityError:
# catch the exception regardless of where in the Try Block the failure occured

但是在 if 语句的情况下,您必须预测失败点将在 MyModels.objects.create() 调用处,这是一个可以轻松避免的潜在错误.

关于Django:捕获完整性错误与 qs.exists() 哪个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51456373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com