我想在数据库中插入几个User
行。我真的不在乎插件是否成功,只要我收到通知,我可以在两种情况下都做到这一点,那么哪一个在性能方面更好(主要是速度)? / p>
save
方法)并捕获潜在的IntegrityError
例外get_or_create
类QuerySet
方法
醇>
答案 0 :(得分:2)
想想你在做什么:你想在数据库中插入行,如果它存在,你不需要从中获取对象。 Ask for forgiveness
,并抓住IntegrityError
例外:
try:
user = User(username=username)
user.save()
except IntegrityError:
print "Duplicate user"
这样可以避免get_or_create()
进行额外get()
次查询的开销。
仅供参考,EAFP
是Python中常见的练习/编码风格:
比获得许可更容易请求宽恕。这个常见的Python 编码风格假定存在有效的键或属性 如果假设被证明是假的,则捕获异常。这干净又快 风格的特点是存在许多尝试和除外 语句。