gpt4 book ai didi

Django get_or_create 与捕获 IntegrityError

转载 作者:行者123 更新时间:2023-12-03 19:59:38 25 4
gpt4 key购买 nike

我想插入几个User数据库中的行。我真的不在乎插入是否成功,只要我得到通知,在这两种情况下我都能做到,那么哪一个在性能(主要是速度)方面更好?

  • 始终插入行(通过调用模型的 save 方法)并捕获潜在的 IntegrityError异常(exception)
  • 调用 get_or_create方法来自 QuerySet类(class)
  • 最佳答案

    想想你在做什么:你想向数据库中插入行,如果它存在,你不需要从中取出对象。 Ask for forgiveness ,并捕获 IntegrityError异常(exception):

    try:
    user = User(username=username)
    user.save()
    except IntegrityError:
    print "Duplicate user"

    这样你就可以避免额外的开销 get()查找者 get_or_create() .

    仅供引用, EAFP 是 Python 中的常见实践/编码风格:

    Easier to ask for forgiveness than permission. This common Python coding style assumes the existence of valid keys or attributes and catches exceptions if the assumption proves false. This clean and fast style is characterized by the presence of many try and except statements.



    另见: https://stackoverflow.com/questions/6092992/why-is-it-easier-to-ask-forgiveness-than-permission-in-python-but-not-in-java

    关于Django get_or_create 与捕获 IntegrityError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23518711/

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