37. DJANGO ORM VE VERİTABANI ETKİLEŞİMİ
Django ORM ve Veritabanı Etkileşimi: Python ile Kolay Veritabanı İşlemleri
Django, Python tabanlı web geliştirme için popüler bir çerçevedir ve Nesne İlişkilendirilmiş Eşleştirme (ORM) sistemi, veritabanlarıyla etkileşimi kolaylaştırır ve geliştiricilerin üretkenliğini artırır. Bu blog yazısında, Django ORM'nin temellerini, temel veritabanı işlemlerini nasıl gerçekleştireceğinizi ve daha karmaşık sorgular oluşturmak için nasıl kullanabileceğinizi inceleyeceğiz.
Django ORM Nedir?
Django ORM, Python nesnelerini veritabanı tablolarıyla eşleştiren bir katmandır. Bu sayede, geliştiriciler SQL sorguları yazmak yerine Python koduyla veritabanıyla etkileşime girebilirler. Bu, kodun daha okunabilir ve bakımı kolay olmasını sağlar ve ayrıca veritabanı şemasında değişiklik yaparken kodda daha az değişiklik yapılmasını gerektirir.
Temel Veritabanı İşlemleri
Django ORM ile temel veritabanı işlemlerini kolayca gerçekleştirebilirsiniz:
- Kayıt Ekleme: Yeni bir veri satırı oluşturmak için
save()
yöntemini kullanın. - Kayıtları Listeleme: Tüm kayıtları veya belirli kriterlere uyan kayıtları almak için
objects.all()
veyaobjects.filter()
yöntemlerini kullanın. - Kayıtları Güncelleme: Mevcut bir kaydı güncellemek için
save()
yöntemini kullanın. - Kayıtları Silme: Bir kaydı silmek için
delete()
yöntemini kullanın.
Örnek:
from django.db import models
class BlogPost(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('date published')
# Yeni bir blog gönderisi ekleme
new_post = BlogPost(title="Yeni Başlık", content="İçerik", pub_date=timezone.now())
new_post.save()
# Tüm blog gönderilerini listeleme
posts = BlogPost.objects.all()
# Son 7 gün içinde yayınlanan gönderileri filtreleme
recent_posts = BlogPost.objects.filter(pub_date__gte=timezone.now() - timedelta(days=7))
# Bir blog gönderisini güncelleme
post = BlogPost.objects.get(id=1)
post.title = "Yeni Başlık"
post.save()
# Bir blog gönderisini silme
post = BlogPost.objects.get(id=1)
post.delete()
Daha Karmaşık Sorgular
Django ORM, daha karmaşık sorgular oluşturmak için de kullanılabilir. Örneğin, birden çok tabloya yayılmış verileri sorgulayabilir veya birleştirilebilir sorgular oluşturabilirsiniz.
Örnek:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=200)
class BlogPost(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('date published')
author = models.ForeignKey(Author, on_delete=models.CASCADE)
# Belirli bir yazara ait tüm blog gönderilerini alma
posts_by_author = BlogPost.objects.filter(author__name="Yazar Adı")
# Bir yazarın adını ve en son yayınlanan blog gönderisinin başlığını alma
author_data = Author.objects.annotate(latest_post_title=models.Subquery(BlogPost.objects.filter(author=models.OuterRef('pk')).order_by('-pub_date').values('title')[:1]))
Sonuç
Django ORM, Python ile veritabanlarıyla etkileşimi kolaylaştırır ve geliştiricilerin üretkenliğini artırır. Temel veritabanı işlemlerini gerçekleştirmekten karmaşık sorgular oluşturmaya kadar, Django ORM, web uygulamaları geliştirmek için güçlü bir araçtır.
Daha Fazla Bilgi:
- Django ORM resmi belgeleri: https://docs.djangoproject.com/en/5.0/
- Django tutorial: https://www.djangoproject.com/start/
- Django ORM ile İlişkileri Yönetme: https://docs.djangoproject.com/en/5.0/topics/db/examples/
Yorumlar
Yorum Gönder