Veritabanları, verilerin kolayca erişilebilir, yönetilebilir ve güncel olmasını sağladığı için verilerin toplanması ve düzenlenmesi için kullanılan en popüler teknolojilerden biridir. Ancak bu veritabanları, bu görevleri yerine getirebilmeleri için bir yönetim sistemi gerektirir. Çoğunlukla, SQL dili bir veritabanındaki işlemleri gerçekleştirmek için kullanılır, ancak uygulamanız büyüdükçe ve daha karmaşık hale geldikçe, her bir işlemin tam olarak ne yaptığına dair bir fikre sahip olmak son derece zorlaşır. Bu, Nesne İlişkisel Eşleme (ORM) tekniğinin resme girdiği yerdir. Bu, seçtiğiniz bir nesne yönelimli programlama dilini kullanarak verilerin sorgulanmasına ve işlenmesine izin verir. ORM'ler, kodunuzun karmaşıklığını azaltır ve daha anlaşılır hale getirir, bu da kodu güncellemeyi, korumayı ve yeniden kullanmayı kolaylaştırır.
Bu yazımızda Python tabanlı bir ORM olan ve bu nedenle günümüzde kullanılan en popüler teknolojilerden biri olan Django ORM'yi inceleyeceğiz.
Django nedir?
Django'nun ORM'sine bakmadan önce, Django adı verilen bu Pythonic teknolojisinin gerçekte ne olduğunu görelim.
Django, Python'da tasarlanmış ücretsiz ve açık kaynaklı bir web çerçevesidir ve bu nedenle basit, esnek, güvenilir ve ölçeklenebilir olmasının yanı sıra çok temiz ve düzenli bir tasarıma sahiptir. Kullanıcılara her şeyi sıfırdan yazmalarını engelleyen ve sonuç olarak işlerini daha hızlı hale getiren ve web sitelerindeki ek yükü azaltan hazır bileşenler sağladığı için web geliştiricileri için işleri son derece kolaylaştırır. Buna ek olarak, son derece güvenlidir ve kullanıcıların UI düzeltme saldırıları, SQL enjeksiyonları vb. gibi güvenlik endişelerinden kaçınmasına yardımcı olur. Ayrıca forumlar aracılığıyla her zaman erişilebilen ve başkalarına yardım etmeye her zaman hazır olan son derece geniş bir topluluğa sahiptir.
Şimdi nihayet Django ORM'ye ve bazı temel özelliklerine bakalım.
Django ORM'ye Erişmek
Django'yu kurduktan ve projesini kurduktan sonra, genellikle aşağıdaki ilk dosyalar sağlanır:
buradaki mysite, oluşturduğunuz projenin adını ifade eder. Tüm bu dosyaların kendi kullanımları vardır ve her dosyanın hangi rolü oynadığını bilmek önemlidir. Buradaki odak noktamız yönetim olacak.py dosyası bizim için sunucu kurmak, geçiş yapmak, veritabanı ile iletişim kurmak ve ORM moduna girmek gibi birçok farklı şeyi kontrol edecek.
Django ORM'yi açmak için Django projenizin ana dizininden bir komut satırı açın ve aşağıdaki komutu çalıştırın:
$ piton yönetmek.py kabuğuBu, bizim için ORM'yi kullanarak veritabanıyla etkileşime başlamamıza izin verecek etkileşimli bir kabuk açacaktır.
Django ORM'de Sorguları Kullanarak Veritabanını Manipüle Etme
ORM, veritabanı ile etkileşime girmemize izin verdiğinden, artık verileri veritabanından almak ve işlemek için farklı sorgular yazabiliriz. Ancak, kabuktaki veritabanı üzerinde çalışmaya başlamadan önce, onunla ilişkili tüm modelleri içe aktarmalıyız. Bu, aşağıda gösterildiği gibi etkileşimli kabukta bir komut çalıştırarak yapılabilir:
appName'den $.modeller import modelNameBurada, appName, oluşturduğunuz uygulamanızın adını ve dolayısıyla modellerinizin şu anda depolandığı yeri ifade eder. ModelName, içe aktarmak ve kullanmak istediğiniz modelin adını belirtir. Aşağıdaki örnekte görüldüğü gibi, burada içe aktarılan birden fazla modeliniz olabilir:
Artık model nesnesine erişebilir ve ondan veri okuyabilirsiniz. Örneğin, tüm gönderilerin listesini istiyorsak, terminalimize aşağıdaki komutu çalıştırarak bunları kolayca alabiliriz:
$ Gönderi.nesneler.herşey()Yukarıdaki komutun sonucu aşağıdaki gibidir:
ORM'de yeni veritabanı verileri oluşturmak, verileri güncellemek ve yapabileceğiniz diğer tüm veritabanı komutları gibi birkaç başka şey yapabiliriz.
Veritabanı Modelleme
Django ORM'nin kullanıcılarına sağladığı en iyi şeylerden biri, modelinizin nesnesinin nitelikleri ile karşılık gelen tablo alanları arasında otomatik olarak bağlantı kurma ve ilişkiler kurma yeteneğidir. Veritabanlarında temel olarak üç tür ilişki vardır. bunlar Bire Bir ilişki, Bire Çok veya Çoka Bir ilişki ve Çoka Çok ilişkilerdir.
Bire Bir ilişki, adından da anlaşılacağı gibi, bir tablonun kaydının başka bir tablonun tek bir kaydına karşılık geldiği yerdir. Django ORM'de bunu aşağıdaki gibi kolayca kurabiliriz:
sınıf Ebeveyn(modeller.modeli):kullanıcı = modeller.OneToOneField(
kullanıcı,
on_delete=modeller.ÇAĞLAYAN,
birincil_key=Doğru,
)
name_of_father = modeller.CharField(maks_uzunluk=100)
name_of_mother = modeller.CharField(maks_uzunluk=100)
Burada, her kullanıcının yalnızca tek bir biyolojik ebeveyni olabilir ve bu nedenle bu bire bir ilişkidir. Şimdi, bu modele erişen herhangi bir kullanıcıyı silersek, 2'nin modelini de silernd birbirlerine bağımlı oldukları için kullanıcı.
Bire çoğa veya çoktan çoğa, bir üst kaydın birden fazla alt kaydının olabileceği bir ilişkiyi ifade eder, ancak yalnızca bir çocuğu olabilir veya hiç çocuğu olmayabilir. Django ORM'de, bu ilişkiyi aşağıdakileri kullanarak kolayca kurabiliriz: Yabancı anahtar alan:
sınıf Müşteri(modeller.modeli):isim = modeller.CharField(maks_uzunluk=255)
sınıf Araç(modeller.modeli):
müşteri = modeller.Yabancı anahtar(
Müşteri,
on_delete=modeller.ÇAĞLAYAN
)
Yukarıdaki kodda görüldüğü gibi, bir müşteri birden fazla araca sahip olabilir.
Son olarak, çoktan çoğa ilişkiler, birden çok tablonun birbiriyle ilişkili olabileceği bir ilişki tanımlar. kullanarak bunu oluşturabiliriz ManyToMany alan. Aşağıdaki örnekte, biri kullanıcı için diğeri ise gönderileri için iki model oluşturduk. Her kullanıcının birden fazla gönderisi olabileceğinden, birden fazla kullanıcı da olabilir.
sınıf Kullanıcı(modeller.modeli):yazı = modeller.ManyToManyField(Gönder, boş=Doğru)
arkadaşlar = modeller.ManyToManyField(ayarlar.AUTH_USER_MODEL, boş=Doğru)
sınıf Gönderi(modeller.modeli):
yazı = modeller.Metin alanı()
beğeniler = modeller.ManyToManyField(ayarlar.AUTH_USER_MODEL, boş=Doğru, ilgili_adı='user_likes')
Sonuç
Django ORM son derece güçlü bir araçtır ve web geliştiricilerinin işini çok daha kolay hale getirmiştir. Veritabanı modellerinin manipülasyonu, modeller arasında ilişki kurulması ve çok daha fazlası gibi çeşitli özelliklere sahiptir. Özetle, Django ORM, Django ile gelen en iyi şeylerden biridir ve kendisine sağlanan işte oldukça etkilidir.