【问题标题】:Bulk create with unique constraint -- ignore duplicates使用唯一约束批量创建 - 忽略重复项
【发布时间】:2017-11-25 07:14:42
【问题描述】:

假设有一个具有唯一约束的模型:

class A(models.Model):
    my_unique_value = models.CharField(unique=True)

我想批量创建 As,但我插入的一些 my_unique_value 值已经在数据库中。我希望它们被忽略(不插入)。

实现这一目标的最佳、最有效的方法是什么?我无法将它们一一插入,并捕获异常(它太慢了)。我也无法先获取所有 As 来清除重复项。

底层数据库是 postgres。

【问题讨论】:

标签: django postgresql django-models


【解决方案1】:

您可以使用get_or_create,正如它的名字所说 - 只会在该项目不存在时创建,否则它将获取它。您可以丢弃获取的项目。

【讨论】:

  • 这将不再是 bulk 创建(它将对每个对象进行一次查询)。
  • 是的,但鉴于您的限制 [a] 无法获取和过滤 [b] 不想重复,这是可用的最佳选择。
猜你喜欢
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多