Yükleniyor...

Python ve PostgreSQL

Python ve PostgreSQL, modern yazılım geliştirme ve sistem mimarisinde kritik bir kombinasyonu temsil eder. Python, açık kaynaklı, yüksek seviyeli bir programlama dili olup, basit ve okunabilir sözdizimi, güçlü veri yapıları ve nesne yönelimli programlama (OOP) desteği ile karmaşık yazılım çözümlerinin hızlı geliştirilmesini sağlar. PostgreSQL ise güçlü bir ilişkisel veritabanı yönetim sistemi (RDBMS) olup, veri bütünlüğü, karmaşık sorgulama yetenekleri ve yüksek performansıyla bilinir.
Bu ikili, geliştiricilerin iş mantığını Python ile uygularken verilerin güvenli, tutarlı ve verimli bir şekilde PostgreSQL üzerinde depolanmasını sağlar. Özellikle büyük ölçekli uygulamalar, web servisleri, analitik platformlar ve bulut tabanlı sistemlerde etkin bir şekilde kullanılır.
Bu eğitimde okuyucu, Python ile PostgreSQL’e bağlanmayı, temel CRUD işlemlerini, OOP prensiplerini uygulamayı ve veri tabanı yönetiminde performans optimizasyonunu öğrenecektir. Ayrıca hatalı bellek yönetimi, zayıf hata yakalama ve verimsiz algoritmalardan kaçınma gibi yaygın sorunlar ele alınacaktır. Eğitim sonunda, katılımcılar, Python ve PostgreSQL’i kullanarak güvenli, sürdürülebilir ve ölçeklenebilir backend sistemler geliştirme becerisine sahip olacaktır.

Temel Örnek

python
PYTHON Code
import psycopg2

try:
connection = psycopg2.connect(
dbname="veritabani_adi",
user="kullanici_adi",
password="sifre",
host="localhost",
port="5432"
)
cursor = connection.cursor()

cursor.execute("""
CREATE TABLE IF NOT EXISTS calisanlar (
id SERIAL PRIMARY KEY,
isim VARCHAR(50) NOT NULL,
maas NUMERIC(10,2) NOT NULL
)
""")
connection.commit()

cursor.execute("INSERT INTO calisanlar (isim, maas) VALUES (%s, %s)", ("Ayse", 5500.00))
connection.commit()

cursor.execute("SELECT * FROM calisanlar")
kayitlar = cursor.fetchall()
for kayit in kayitlar:
print(kayit)

except psycopg2.Error as e:
print("Veritabanı hatası:", e)
finally:
if cursor:
cursor.close()
if connection:
connection.close()

Bu temel örnekte, psycopg2 kütüphanesi ile PostgreSQL’e bağlanılıyor. try/except bloğu veritabanı hatalarını kontrol etmek için kullanılır. CREATE TABLE IF NOT EXISTS sorgusu, tablo yalnızca mevcut değilse oluşturulur.
INSERT işlemleri parametrik sorgular (%s) ile yapılır; bu, SQL enjeksiyonuna karşı koruma sağlar. fetchall() tüm kayıtları alır ve for döngüsü ile ekrana yazdırır. finally bloğu, cursor ve connection’ı kapatarak bellek sızıntılarını önler. Bu örnek, Python ve PostgreSQL’in temel kullanımını, veritabanı bağlantısını, veri operasyonlarını ve hata yönetimini gösterir.

Pratik Örnek

python
PYTHON Code
import psycopg2
from psycopg2.extras import RealDictCursor

class CalisanYoneticisi:
def init(self, db_config):
self.db_config = db_config

def __enter__(self):
self.connection = psycopg2.connect(**self.db_config)
self.cursor = self.connection.cursor(cursor_factory=RealDictCursor)
return self

def __exit__(self, exc_type, exc_val, exc_tb):
if self.cursor:
self.cursor.close()
if self.connection:
self.connection.close()

def calisan_ekle(self, isim, maas):
self.cursor.execute("INSERT INTO calisanlar (isim, maas) VALUES (%s, %s)", (isim, maas))
self.connection.commit()

def calisanlari_listele(self):
self.cursor.execute("SELECT * FROM calisanlar ORDER BY maas DESC")
return self.cursor.fetchall()

def maas_guncelle(self, calisan_id, yeni_maas):
self.cursor.execute("UPDATE calisanlar SET maas = %s WHERE id = %s", (yeni_maas, calisan_id))
self.connection.commit()

db_config = {
"dbname": "veritabani_adi",
"user": "kullanici_adi",
"password": "sifre",
"host": "localhost",
"port": "5432"
}

with CalisanYoneticisi(db_config) as yonetici:
yonetici.calisan_ekle("Mehmet", 6000)
calisanlar = yonetici.calisanlari_listele()
for calisan in calisanlar:
print(calisan)

Bu pratik örnek, tüm veritabanı işlemlerini bir sınıf içinde kapsüller ve OOP prensiplerini uygular. enter ve exit metotları, context manager olarak sınıfın kullanımına olanak tanır, kaynakların doğru şekilde kapanmasını sağlar. RealDictCursor, verileri sözlük olarak döndürerek kolon isimleri ile erişimi kolaylaştırır.
Metotlar calisan_ekle, calisanlari_listele ve maas_guncelle CRUD operasyonlarını, commit işlemleri ile birlikte uygular. Sıralama ve güncelleme işlemleri algoritmik düşünceyi gerçek senaryoda gösterir. Bu yapı, iş mantığını SQL’den ayırarak kodun bakımını ve yeniden kullanılabilirliğini artırır.

En iyi uygulamalar arasında parametrik sorgularla güvenlik sağlamak, cursor ve connection’ları doğru kapatmak, uygun veri yapıları kullanarak performansı artırmak yer alır. Büyük tablolar için indeksleme kullanmak, hata yakalama ve logging mekanizmalarını doğru yapılandırmak önemlidir. Toplu veri eklemelerinde batch işlemleri tercih edilmelidir. Ortam değişkenlerinde saklanan veritabanı kimlik bilgileri, güvenliği artırır. OOP ve transaction optimizasyonu, ölçeklenebilir, güvenli ve sürdürülebilir backend sistemleri için kritik öneme sahiptir.

📊 Referans Tablosu

Element/Concept Description Usage Example
Veritabanı Bağlantısı PostgreSQL ile bağlantı kurulması connection = psycopg2.connect(**db_config)
Cursor Sorgu çalıştırma ve veri çekme cursor = connection.cursor()
Parametrik Sorgular SQL enjeksiyonuna karşı koruma cursor.execute("INSERT INTO calisanlar (isim, maas) VALUES (%s, %s)", (isim, maas))
Context Manager Kaynak yönetimi ve otomatik kapanış with CalisanYoneticisi(db_config) as yonetici: ...
OOP Sınıfı Veritabanı işlemlerinin kapsüllenmesi class CalisanYoneticisi: ...
RealDictCursor Verileri sözlük olarak döndürme cursor = connection.cursor(cursor_factory=RealDictCursor)

Özetle, Python ve PostgreSQL ile güvenli, ölçeklenebilir ve sürdürülebilir backend sistemler geliştirmek mümkündür. Bu eğitimde veritabanı bağlantısı, tablo oluşturma, CRUD işlemleri, transaction yönetimi, OOP uygulamaları ve en iyi uygulamalar ele alınmıştır.
Sonraki adımlar olarak ileri SQL sorguları, indeksleme stratejileri, transaction izolasyonu, stored procedure ve trigger’lar incelenebilir. Gerçek dünya projelerinde, çalışan yönetimi, analitik platformlar veya backend API’ler gibi uygulamalarla pratik yapmak, öğrenilen bilgilerin kalıcılığını ve uygulanabilirliğini artırır.

🧠 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