मैं थोक के लिए कोशिश कर रहा हूँ की अनदेखी एक बहुत बड़े डेटासेट के लिए एक MySQL डाटाबेस में सम्मिलित बना सकते हैं और डुप्लिकेट त्रुटियों को अनदेखा करते हुए Django के 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
(बहुत तेजी से) का उपयोग करें, मैं एक त्रुटि एक प्राथमिक कुंजी डुप्लिकेट है और सम्मिलन बंद हो जाता है, तो मिलता है।
पर एक नज़र डालें [पंक्तियों IntegrityError कारण उपेक्षा के साथ Django bulk_create?] [1] या [MySQL सम्मिलित करें ... पर थोक डालने के लिए Django 1.4 के साथ नकली चाबी अद्यतन] [2] [1]: http://stackoverflow.com/questions/12451053/django-bulk-create-with-ignore-rows-that-cause-integrityerror [2]: http: // stackoverflow.co एम/प्रश्न/12916880/mysql-डालने-ऑन-डुप्लिकेट कुंजी अद्यतन-साथ-Django-1-4 के लिए थोक डालने –