django bulk создать игнорировать дубликаты

Я пытаюсь вставить массив в MySQL db для очень большого набора данных и очень хотел бы использовать bulk_create django для bulk_create , игнорируя повторяющиеся ошибки.

Модель образца:

 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) 

Есть ли способ в джанго сделать это, чтобы избежать дубликатов? имитировать insert ignore MySQL MySQL было бы здорово. Если я просто использую bulk_create (очень быстро), я получаю сообщение об ошибке, если есть дубликат первичного ключа и остановка вставки.

One Solution collect form web for “django bulk создать игнорировать дубликаты”

Разве это невозможно? Я не уверен, правильно ли я использовал разреженный список, но я понял, что он позволяет ссылаться на список, который обрабатывается в цикле.

 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 and not elem.pk in to_insert[:]: to_insert[:].append(elem) if to_insert: model.__class__.objects.bulk_create(to_insert) 
  • MySQL-db lib для Python 3.x?
  • Escape string Python для MySQL
  • Python & MySql: Юникод и кодирование
  • вставка python и извлечение двоичных данных в mysql
  • Временное напоминание электронной почты в python
  • Как сравнить строку версии («xyz») в MySQL?
  • Вставить несколько текстовых файлов с разделителями табуляции в MySQL с помощью Python?
  • Разбор XML-файла и его хранение в базе данных
  • Python - лучший язык программирования в мире.