0Pricing
Flask Academy · Ders

Birleştirmeler ve Tembel ile İstekli Yükleme

İlişkiler arasında gezinirken N+1 sorgularından kaçının.

Birleştirmeler ve Tembel ile İstekli Yükleme, CoddyKit'te ücretsiz bir Flask Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Flask Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Flask Academy kursu toplamda 4 dersten oluşur.

Tablolar arasında sorgulama

Bazen üst öğeleri alt öğelerinin verilerine göre filtrelemeniz gerekir. Bir join, tek bir sorgunun aynı anda iki ilişkili tabloyu kapsamasını sağlar. 🔀

join yazma

İlişkili bir modeli sorguya dahil etmek için sorgu üzerinde join() çağırın; ardından iki tarafta da tek bir birleşik sorgu olarak filtreleme yapın.

q = User.query.join(Post).filter(Post.title == "Hi")

Birleştirilen tabloyu filtreleme

Bir join işleminden sonra diğer modeldeki koşulları da kullanabilirsiniz; böylece üst öğeleri alt öğelerinin içeriğine göre bulursunuz.

active = User.query.join(Post).filter(Post.public).all()

Gecikmeli yükleme varsayılandır

Varsayılan olarak relationship'lar gecikmeli yüklenir: alt öğeler yalnızca bu özniteliğe gerçekten eriştiğiniz anda yüklenir.

user = User.query.first()
user.posts

N+1 sorunu

Üst öğeler üzerinde döngü kurup alt öğeleri gecikmeli okumak, her üst öğe için bir sorgu çalıştırır. Bu N+1 düzeni performansı fark ettirmeden düşürür. 😬

for u in User.query.all():
    print(len(u.posts))

Önden yükleme sorunu çözer

Önden yükleme, ilişkili satırları başlangıçta alır; böylece bütün grafik yalnızca bir veya iki sorguda yüklenir.

Tek sorguda joinedload

Üst ve alt öğeleri tek bir SQL join'iyle birlikte almak için joinedload kullanın.

from sqlalchemy.orm import joinedload
User.query.options(joinedload(User.posts)).all()

Koleksiyonlar için selectinload

selectinload, alt öğeleri ikinci bir toplu sorguda yükler; bu, bire çok listelerinde çoğu zaman daha iyi ölçeklenir.

from sqlalchemy.orm import selectinload
User.query.options(selectinload(User.posts)).all()

Stratejiyi model üzerinde ayarlama

relationship'ın gecikmeli yükleme seçeneğiyle select, joined veya selectin gibi bir varsayılan da seçebilirsiniz.

posts = db.relationship("Post", lazy="selectin")

join önden yükleme yapmaz

Düz bir join tablolar arasında filtreleme yapar, ancak relationship'ı önceden yüklemez. Bunun için yine bir önden yükleme seçeneği eklemeniz gerekir.

Yükleme yöntemini bilinçli seçme

Tek bir satır için gecikmeli yükleme uygundur; çok sayıda üst öğe üzerinde döngü kurup alt öğelerini okurken önden yüklemeyi tercih edin.

Hızlı kontrol

100 kullanıcı üzerinde döngü kuruyor ve her kullanıcının gönderilerini okuyorsunuz. Gecikmeli yükleme hangi soruna yol açabilir?

Özet: Birleştirme ve yükleme

Artık tabloları join ile birleştirebilir, N+1 sorununu fark edebilir ve bunu joinedload veya selectinload ile çözebilirsiniz. Verimli ilişkisel okumalar tamamlandı! 🏁

Sıkça Sorulan Sorular

“Birleştirmeler ve Tembel ile İstekli Yükleme” dersi ücretsiz mi?

Evet — “Birleştirmeler ve Tembel ile İstekli Yükleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Flask Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Flask Academy kursu toplamda 4 dersten oluşur.

“Birleştirmeler ve Tembel ile İstekli Yükleme” dersinde ne öğreneceğim?

İlişkiler arasında gezinirken N+1 sorgularından kaçının. Flask Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Flask Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Flask Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Birleştirmeler ve Tembel ile İstekli Yükleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Flask Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Flask Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. query ve get ile Satır Getirme
  2. Sonuçları Filtreleme, Sıralama ve Sınırlandırma
  3. İlişkileri ve Yabancı Anahtarları Tanımlama
  4. Birleştirmeler ve Tembel ile İstekli Yükleme
← Flask Academy Sayfasına Dön