Yükleniyor...

Python ve SQLite

Python ve SQLite, modern yazılım geliştirme ve sistem mimarisinde veri yönetimi için kritik bir kombinasyondur. Python, temiz sözdizimi, esnek veri yapıları, algoritmik işleme yetenekleri ve nesne yönelimli programlama (OOP) desteği ile güçlü bir programlama dilidir. SQLite ise gömülü, hafif ve yüksek performanslı bir ilişkisel veritabanı motorudur; tüm verileri tek bir dosyada saklayarak masaüstü uygulamalar, gömülü sistemler ve orta ölçekli web projeleri için ideal bir çözüm sunar.
Python ile SQLite entegrasyonu, geliştiricilere CRUD (Oluşturma, Okuma, Güncelleme, Silme) işlemlerini hızlı ve etkili bir şekilde yapma olanağı tanır. Önemli kavramlar arasında Python sözdizimi, listeler ve sözlükler gibi veri yapıları, algoritmik düşünme ve veritabanı operasyonlarını organize etmek için OOP prensipleri bulunur. Bu yaklaşım, ölçeklenebilir, bakımı kolay ve yüksek performanslı uygulamalar geliştirmeyi sağlar.
Bu eğitimde okuyucu, tablolar oluşturmayı, veri eklemeyi ve sorgulamayı, hata yönetimini, sorgu optimizasyonunu ve yaygın sorunları (bellek sızıntıları, verimsiz algoritmalar, hatalı istisna yönetimi) önlemeyi öğrenecektir. Uygulamalı örnekler, Python ve SQLite kavramlarının gerçek dünya yazılım mimarisi ve sistem geliştirme süreçlerinde nasıl kullanılacağını göstermektedir.

Temel Örnek

python
PYTHON Code
import sqlite3

# Veritabanına bağlan

conn = sqlite3.connect('ornek.db')
cursor = conn.cursor()

# Tablo oluştur

cursor.execute('''
CREATE TABLE IF NOT EXISTS kullanicilar (
id INTEGER PRIMARY KEY,
isim TEXT NOT NULL,
yas INTEGER NOT NULL
)
''')

# Veri ekle

kullanicilar = \[
('Ali', 25),
('Ayşe', 30),
('Mehmet', 22)
]
cursor.executemany('INSERT INTO kullanicilar (isim, yas) VALUES (?, ?)', kullanicilar)

# Verileri çek

cursor.execute('SELECT * FROM kullanicilar')
for satir in cursor.fetchall():
print(satir)

# Bağlantıyı kapat

conn.commit()
conn.close()

Bu temel örnek, sqlite3 kütüphanesini kullanarak SQLite veritabanına bağlanmayı ve temel veri işlemlerini göstermektedir. cursor nesnesi SQL sorgularını çalıştırmak için kullanılır. CREATE TABLE ile tablo oluşturulur, PRIMARY KEY ve veri tipleri tanımlanır. executemany fonksiyonu, birden fazla veri satırını verimli şekilde ekler. fetchall, sorgu sonuçlarını Python listesi olarak döndürür. commit ile değişiklikler kaydedilir ve close ile bağlantı kapatılır; bu adımlar bellek sızıntısını önler. Bu örnek, küçük ölçekli projeler ve gömülü sistemler için iyi bir başlangıçtır ve ileri düzey mimari kavramlara zemin hazırlar.

Pratik Örnek

python
PYTHON Code
import sqlite3

class KullaniciDB:
def init(self, db_adi='kullanicilar.db'):
self.conn = sqlite3.connect(db_adi)
self.cursor = self.conn.cursor()
self.tablo_olustur()

def tablo_olustur(self):
self.cursor.execute('''
CREATE TABLE IF NOT EXISTS kullanicilar (
id INTEGER PRIMARY KEY,
isim TEXT NOT NULL,
yas INTEGER NOT NULL
)
''')

def kullanici_ekle(self, isim, yas):
self.cursor.execute('INSERT INTO kullanicilar (isim, yas) VALUES (?, ?)', (isim, yas))
self.conn.commit()

def kullanicilari_listele(self, min_yas=None):
if min_yas:
self.cursor.execute('SELECT * FROM kullanicilar WHERE yas >= ?', (min_yas,))
else:
self.cursor.execute('SELECT * FROM kullanicilar')
return self.cursor.fetchall()

def yas_guncelle(self, kullanici_id, yeni_yas):
self.cursor.execute('UPDATE kullanicilar SET yas = ? WHERE id = ?', (yeni_yas, kullanici_id))
self.conn.commit()

def kullanici_sil(self, kullanici_id):
self.cursor.execute('DELETE FROM kullanicilar WHERE id = ?', (kullanici_id,))
self.conn.commit()

def baglantiyi_kapat(self):
self.conn.close()

# Kullanım

db = KullaniciDB()
db.kullanici_ekle('Fatma', 28)
db.kullanici_ekle('Emre', 35)
print(db.kullanicilari_listele(min_yas=30))
db.yas_guncelle(2, 36)
db.kullanici_sil(1)
db.baglantiyi_kapat()

Pratik örnek, nesne yönelimli programlama (OOP) yaklaşımıyla tüm veritabanı işlemlerini KullaniciDB sınıfı içinde toplar. Bu yapı, kodun okunabilirliğini ve bakımını artırır. kullanici_ekle, kullanicilari_listele, yas_guncelle ve kullanici_sil metodları veri manipülasyonu algoritmalarını uygular. kullanicilari_listele, yaş filtresi ile sorgu yapabilir. commit ile değişiklikler kaydedilir, encapsulation yaklaşımı sınıfın genişletilmesini ve daha karmaşık sorguların entegrasyonunu kolaylaştırır. Bu desen, kullanıcı veya envanter yönetimi sistemleri için idealdir.

En iyi uygulamalar, bağlantıları doğru şekilde açıp kapatmayı, parametreli sorgular kullanarak SQL enjeksiyonunu önlemeyi, toplu eklemelerde executemany fonksiyonunu kullanmayı ve değişikliklerden sonra commit çalıştırmayı içerir. OOP yaklaşımı kodun tekrar kullanılabilirliğini ve bakımını artırır, veri doğrulama güvenlik ve veri bütünlüğünü sağlar. Yaygın hatalar arasında uzun süre açık bırakılan bağlantılar, verimsiz eklemeler, yetersiz istisna yönetimi ve indekslenmemiş karmaşık sorgular bulunur. Hata ayıklama için try-except blokları ve logging kullanılabilir. Performans optimizasyonu için indeksleme ve uygun veri yapıları tercih edilmelidir. Güvenlik için hazırlıklı sorgular ve giriş doğrulama önemlidir.

📊 Referans Tablosu

Element/Concept Description Usage Example
sqlite3.connect Veritabanına bağlantı oluşturur conn = sqlite3.connect('ornek.db')
cursor.execute SQL komutlarını çalıştırır cursor.execute('SELECT * FROM kullanicilar')
commit Değişiklikleri kaydeder conn.commit()
fetchall Sorgu sonuçlarını listeler satirlar = cursor.fetchall()
OOP Sınıfı Veritabanı işlemlerini kapsüller class KullaniciDB: ...

Python ve SQLite öğrenimi, verileri etkin yönetmeyi, algoritmik düşünmeyi ve OOP prensiplerini uygulamayı sağlar. Bu beceriler, web geliştirme, masaüstü uygulamaları ve gömülü sistemlerde ölçeklenebilir ve güvenilir sistemler geliştirmek için kritiktir. Gelecek adımlar, daha büyük veritabanlarını yönetmek, karmaşık sorguları optimize etmek, işlem yönetimi ve veri güvenliğini ele almak olmalıdır. CRUD işlemleri, hata yönetimi ve performans optimizasyonu üzerine pratik projeler, bu becerileri pekiştirir. Kaynaklar: Python ve SQLite resmi dokümantasyonu ve ileri düzey backend kursları.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu konudaki anlayışınızı pratik sorularla test edin.

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek