关于Django中批量保存对象的问题
我在Django的在线文档中没有看到任何关于这个主题的东西 我试图将对象列表保存到数据库中,但我能做的是循环遍历列表并对每个对象调用save()关于Django中批量保存对象的问题,django,django-models,save,Django,Django Models,Save,我在Django的在线文档中没有看到任何关于这个主题的东西 我试图将对象列表保存到数据库中,但我能做的是循环遍历列表并对每个对象调用save() 那么Django是否多次访问数据库?或者Django将执行一批保存 不幸的是,Django 1.3和更早版本不直接支持批插入。如果要使用ORM,则必须对每个对象调用save()。如果它是一个大列表,并且性能是一个问题,那么可以使用django.db.cursor在事务中手动插入项目,以显著加快处理速度。如果你有一个巨大的数据集,你需要开始研究特定于数据
那么Django是否多次访问数据库?或者Django将执行一批保存 不幸的是,Django 1.3和更早版本不直接支持批插入。如果要使用ORM,则必须对每个对象调用save()。如果它是一个大列表,并且性能是一个问题,那么可以使用django.db.cursor在事务中手动插入项目,以显著加快处理速度。如果你有一个巨大的数据集,你需要开始研究特定于数据库引擎的方法,比如Postgres中的COPY FROM。可能是一个很好的起点,但正如代码片段的作者所说,它可能还没有准备好生产。这个问题也在,它提供了一些让Django做到这一点的方法。从Django 1.4开始,QuerySet对象上存在一个
bulk\u create()
方法,允许在单个查询中插入对象列表。有关详细信息,请参阅:
来自Django 1.4的存在
bulk\u create()
,但是,总是但是
您需要小心,使用bulk\u create()
它不会在内部调用instancesave()
方法
正如django博士所说
将不会调用模型的save()方法
所以,如果您要覆盖save方法(就像我的情况一样),就不能使用bulk\u create 非常好!我应该升级到1.4。bulk_create非常棒,但遗憾的是它不支持继承的模型。有什么想法可以解决这个问题吗?请特别注意“。django 1.5仍然是这样吗?没有-请参阅下面的答案。从1.4开始,
bulk\u create()
将处理有效的批量数据插入。()复制自仍然比批量创建好得多?现在批量创建()在django 1.4及更高版本中可用,也许值得更改公认的答案