我正在使用bulk_create将数千或行加载到Postgresql数据库中。不幸的是,某些行导致IntegrityError并停止了bulk_create进程。我想知道是否有一种方法告诉django忽略这些行并尽可能多地保存批处理?
现在可以在Django 2.2上实现 Django 2.2 从文档中ignore_conflicts为该bulk_create方法添加了一个新选项:
ignore_conflicts
bulk_create
在支持它的数据库上(除PostgreSQL <9.5和Oracle以外的所有数据库),将ignore_conflicts参数设置为True会告诉数据库忽略插入任何失败约束的行的失败,例如重复的唯一值。启用此参数将禁用在每个模型实例上设置主键(如果数据库正常支持的话)。
例:
Entry.objects.bulk_create([ Entry(headline='This is a test'), Entry(headline='This is only a test'), ], ignore_conflicts=True)