非常に大きなデータセットの MySQL データベースに一括挿入しようとしていますが、bulk_create重複エラーを無視して django を使用したいと考えています。
サンプルモデル:
class MyModel(models.Model):
    my_id=models.IntegerField(primary_key=True)
    start_time = models.DateTimeField()
    duration = models.IntegerField()
    ......
    description = models.CharField(max_length=250)
これまでのところ、次のコードがあります (すべてのモデルに共通で、Model_instance() と [bulk_create オブジェクトのリスト] を渡します):
def insert_many(model, my_objects):
    # list of ids where pk is unique
    in_db_ids = model.__class__.objects.values_list(model.__class__._meta.pk.name)
    if not in_db_ids:
        # nothing exists, save time and bulk_create
        model.__class__.objects.bulk_create(my_objects)
    else:
        in_db_ids_list = [elem[0] for elem in in_db_ids]
        to_insert=[]
        for elem in my_objects:
            if not elem.pk in in_db_ids_list:
                to_insert.append(elem)
        if to_insert:
            model.__class__.objects.bulk_create(to_insert)
重複を避けるためにdjangoでこれを行う方法はありますか? MySQL を模倣するのinsert ignoreは素晴らしいことです。単にbulk_create(非常に高速に)使用すると、主キーの重複があり、挿入が停止するとエラーが発生します。