Django'nun ORM'sini kullanarak bir SQLite veritabanına 8000+ kayıt eklemeliyim. Bu işlemin dakikada yaklaşık bir kez bir cronjob olarak çalıştırılması gerekiyor.
Şu anda tüm öğeler arasında yineleme yapmak için bir for döngüsü kullanıyorum ve ardından bunları tek tek takın.
Örnek:Django kullanarak binlerce kayıt bir SQLite tablosuna yerleştirmenin etkili bir yolu nedir?
for item in items:
entry = Entry(a1=item.a1, a2=item.a2)
entry.save()
Bunu yapmanın etkili yolu nedir?
Düzeltme: İki ekleme yöntemi arasında küçük bir karşılaştırma. commit_manually dekoratör olmadan
(11245 kayıt):
[email protected] marinetraffic]$ time python manage.py insrec
real 1m50.288s
user 0m6.710s
sys 0m23.445s
commit_manually dekoratör Kullanma (11245 kayıt):
[[email protected] marinetraffic]$ time python manage.py insrec
real 0m18.464s
user 0m5.433s
sys 0m10.163s
Not: testi komut da diğer bazı işlemleri yapar takmadan yanında veritabanına (bir ZIP dosyasını indirir, ZIP arşivinden bir XML dosyası çıkarır, XML dosyasını ayrıştırır) böylece yürütme için gereken süre necessa olmaz Kayıtları eklemek için gereken zamanı temsil eder.
Bu, bunların tümünü model olarak başlatacak ve binlerce ayrı eklentiyi çalıştıracaktır. Her zaman SQL'e düşmek zorunda kaldım ve bu tür bir hacim için manuel toplu insertler yapmam gerekiyordu; Django bunun için inşa edilmedi. Ama evet, bu şekilde yapıyorsan kesinlikle tek bir işlem istiyorsun. –
Bu Django ORM'yi iyi bilmiyorum ama ORM sizin için sadece SQL'i üretmiyor mu? Ve yabancı anahtar içermeyen basit bir modelde, tek bir deyim tek bir ekleme deyimine dönüşmez mi? – monkut
Merhaba, lütfen aynı şeyi .net açısından detaylandırır mısınız? Aynı durumla karşılaştığım için çok iyi bir yardımcı olurdu. –