Python ile veritabanı programlama: sqlite3 ve SQLAlchemy
Python kodundan veritabanına güvenle bağlanır, parametreli sorgular, işlemler, ORM ve şema göçleriyle sağlam veri katmanları kurarsın.
Seviye 301 · 18 ders · 15 pratik lab
Dersler
DB-API ve sqlite3
- DB-API: bağlantı, imleç ve sonuç
- Parametreli sorgular ve SQL enjeksiyonu
- İşlemler: commit, rollback ve with
- Satır fabrikaları ve tür dönüşümleri
- SQLite'ta eşzamanlı yazma ve WAL
- Kısa görev: varlık envanterini SQLite'a taşı
SQLAlchemy
- SQLAlchemy Core ile sorgu oluşturmak
- ORM modelleri ve ilişkiler
- Oturum, sorgu ve N+1 sorunu
- alembic ile şema göçleri
- Veri erişimini ayırmak: depo deseni
- Kısa görev: ham SQL kodunu ORM'e taşı
Sağlamlık
- Bağlantı havuzları ve zaman aşımı
- Veritabanı kodunu test etmek
- Bağlantı bilgisini koddan ayırmak
- Python ile yedek alma ve geri yükleme
- Kısa görev: her değişikliği kaydeden denetim izi
Bitirme
- Bitirme görevi: göçleri ve testleri olan varlık kayıt sistemi
Pratik lablar
- Sorgu sonuçlarını sözlük olarak almak: sqlite3 row_factory ile satırları sütun adlarıyla okunur hale getir ve stok raporunu sözlük listesi olarak döndür.
- Arama sorgusunu parametreli yapmak: f-string ile kurulan müşteri arama sorgusunu yer tutuculu hale getir; tırnak içeren adlar da doğru aransın.
- IN listesi ve sıralama sütununu güvenle kurmak: Değişken uzunluklu IN listesini yer tutucularla, sıralama sütununu ise izinli listeyle kuran sorgu fonksiyonunu yaz.
- Tarih ve Decimal türlerini doğru saklamak: Tarihleri metin, tutarları float saklayan kodu uyarlayıcı ve dönüştürücülerle düzelt; kuruş kaybı ve saat dilimi testi geçsin.
- Yarım kalan transferi geri almak: İki güncellemeden biri hata verince parayı kaybeden transfer kodunu tek işlemde topla; hata durumunda bakiyeler değişmesin.
- Kilitli veritabanı hatasını gidermek: İki yazıcı aynı anda çalışınca "database is locked" veren kodu WAL kipi ve bekleme süresiyle düzelt.
- Toplu aktarımda bozuk satırı atlamak: Bin satırlık aktarımda tek bozuk satır yüzünden hepsini geri alan kodu savepoint ile satır bazında toparlanır yap.
- Kitap ve yazar için ORM modeli yazmak: Çınaraltı Kütüphanesi için yazar ve kitap modellerini bire-çok ilişkiyle tanımla ve bir yazarın kitaplarını sorgula.
- Core ile gruplu rapor sorgusu kurmak: SQLAlchemy Core select, join ve group_by ile aylık satış toplamı sorgusunu yaz; ham SQL kullanma.
- Sipariş listesindeki N+1 sorgusunu gidermek: Her sipariş için ayrı müşteri sorgusu atan listeyi selectinload ile düzelt ve sorgu sayısını testle sınırla.
- Veri erişimini depo sınıfına ayırmak: İş mantığına gömülü oturum çağrılarını bir depo sınıfına taşı ve servis testlerini sahte depoyla veritabanısız çalıştır.
- Tabloya göçle sütun eklemek: alembic ile ürün tablosuna varsayılan değerli bir sütun ekleyen göçü yaz; geri alma adımı da çalışsın.
- Her testi işlemle sarıp geri almak: Testler arasında veri sızdıran düzeneği her testi işlem içinde çalıştırıp geri alan bir fixture ile düzelt.
- Bağlantı bilgisini koddan çıkarmak: Koda gömülü bağlantı adresini ortam değişkenine taşı, eksikse anlaşılır hata ver ve parolayı günlükte maskele.
- Çalışan veritabanını yedekleyip doğrulamak: sqlite3 backup API'siyle yazma sürerken tutarlı yedek al ve integrity_check ile satır sayılarını karşılaştırarak doğrula.
Kurs hakkında
Python kodundan veritabanına güvenle bağlanır, parametreli sorgular, işlemler, ORM ve şema göçleriyle sağlam veri katmanları kurarsın.
Ne öğreneceksin
- DB-API ve sqlite3
- SQLAlchemy
- Sağlamlık
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.