关于在Django中批量保存对象的问题

zs2*_*020 31 django save django-models

我没有在Django的在线文档中看到关于这个主题的任何内容.

我试图将对象列表保存到数据库,但我可以做的是遍历列表并在每个对象上调用save().

那么Django几次命中数据库了吗?或者Django会做一次批量保存吗?

Gar*_*ary 35

从Django 1.4开始,bulk_create()QuerySet对象上存在一个方法,允许在单个查询中插入对象列表.有关详细信息,请参阅:


Bra*_*kle 10

不幸的是,批量插入是Django 1.3及之前不直接支持的东西.如果要使用ORM,则必须在每个单独的对象上调用save().如果它是一个大型列表并且性能是一个问题,您可以使用django.db.cursor在事务内手动INSERT项目,以显着加快进程.如果您有一个庞大的数据集,则需要开始查看特定于数据库引擎的方法,例如Postgres中的COPY FROM.

  • 不 - 见下面的答案.从1.4开始,`bulk_create()`将处理有效的批量数据插入.(https://docs.djangoproject.com/en/1.5/ref/models/querysets/#bulk-create) (6认同)
  • django 1.5仍然如此吗? (3认同)

lev*_*evi 5

从 Django 1.4 开始存在bulk_create(),但是,总是但是。

\n\n

您需要小心,使用bulk_create()它不会在内部调用实例save()方法。

\n\n

正如 django 文档所说

\n\n
\n

model\xe2\x80\x99s save()方法不会被调用

\n
\n\n

因此,如果您要重写 save 方法(如我的情况),则不能使用bulk_create。

\n