Yükleniyor...

Python ve MySQL

Python ve MySQL, modern yazılım geliştirme ve sistem mimarisinde güçlü bir kombinasyon sunar. Python, basit ve anlaşılır sözdizimi, geniş kütüphane ekosistemi ve esnek veri yapılarıyla hızlı prototip geliştirmeyi ve ölçeklenebilir uygulamalar inşa etmeyi mümkün kılar. MySQL ise güçlü, güvenilir ve yaygın olarak kullanılan ilişkisel bir veritabanı yönetim sistemidir ve verilerin kalıcı olarak depolanmasını sağlar. Python ile MySQL’i birleştirerek, yüksek performanslı, güvenli ve sürdürülebilir backend çözümleri tasarlamak mümkündür.
Bu ikili, özellikle web uygulamaları, finansal sistemler, ERP çözümleri ve dağıtık sistemlerde veri yönetimi gereken durumlarda kullanılır. Yazılım geliştirici, bağlantı yönetimi, işlem kontrolleri ve güvenli sorgular gibi kritik konulara dikkat ederek uygulamaların sağlamlığını artırabilir.
Bu eğitimde okuyucu şunları öğrenecektir:

  • Python ile MySQL bağlantısı kurmayı ve yönetmeyi
  • CRUD operasyonlarını güvenli veri yapılarıyla gerçekleştirmeyi
  • Algoritmalar ve veri yapıları kullanarak veri manipülasyonunu optimize etmeyi
  • OOP prensipleri ile veri erişim mantığını modüler hale getirmeyi
  • Hafıza sızıntısı, hatalı hata yönetimi ve verimsiz sorgulardan kaçınmayı
    Bu bilgiler, yüksek standartlarda performans, ölçeklenebilirlik ve güvenlik sunan profesyonel backend uygulamaları geliştirmek için kritik öneme sahiptir.

Temel Örnek

python
PYTHON Code
import mysql.connector

def baglanti_olustur():
try:
conn = mysql.connector.connect(
host="localhost",
user="root",
password="sifre",
database="firma"
)
return conn
except mysql.connector.Error as e:
print(f"Bağlantı hatası: {e}")
return None

def calisanlari_getir():
conn = baglanti_olustur()
if conn is None:
return \[]
try:
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT id, isim, pozisyon FROM calisanlar")
return cursor.fetchall()
except mysql.connector.Error as e:
print(f"Sorgu hatası: {e}")
return \[]
finally:
if conn.is_connected():
conn.close()

if name == "main":
liste = calisanlari_getir()
for calisan in liste:
print(f"ID: {calisan\['id']} | İsim: {calisan\['isim']} | Pozisyon: {calisan\['pozisyon']}")

Bu örnek, Python ile MySQL arasında temel bir bağlantı ve veri sorgulama işlemi gerçekleştirir. baglanti_olustur fonksiyonu, veritabanı bağlantısını merkezi olarak yönetir ve hataları try/except bloğu ile yakalar. Bu yapı, bağlantı hatalarını güvenli bir şekilde yönetmeyi sağlar.
calisanlari_getir fonksiyonu, bağlantıyı alır ve SQL sorgusu ile çalışan bilgilerini listeler. dictionary=True parametresi, sonuçları Python sözlükleri olarak döndürür ve veri manipülasyonunu kolaylaştırır. finally bloğu, bağlantının her durumda kapanmasını sağlayarak hafıza sızıntılarını önler.
Bu yapı, backend mimarisinde veri erişim katmanının güvenli ve modüler bir şekilde tasarlanmasına örnektir. Örneğin bir ERP sisteminde, çalışan, ürün veya fatura bilgilerini benzer bir yöntemle yönetmek mümkündür. Bu örnek, veri yapıları ve algoritmaların etkin kullanımını, hata yönetimini ve kaynakların doğru kapatılmasını göstermektedir.

Pratik Örnek

python
PYTHON Code
import mysql.connector

class CalisanDB:
def init(self, host, user, password, database):
self.config = {
"host": host,
"user": user,
"password": password,
"database": database
}

def _baglan(self):
return mysql.connector.connect(**self.config)

def calisan_ekle(self, isim, pozisyon):
conn = self._baglan()
try:
cursor = conn.cursor()
cursor.execute(
"INSERT INTO calisanlar (isim, pozisyon) VALUES (%s, %s)",
(isim, pozisyon)
)
conn.commit()
except mysql.connector.Error as e:
print(f"Ekleme hatası: {e}")
conn.rollback()
finally:
conn.close()

def pozisyona_gore_getir(self, pozisyon):
conn = self._baglan()
try:
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT id, isim, pozisyon FROM calisanlar WHERE pozisyon=%s", (pozisyon,))
return cursor.fetchall()
except mysql.connector.Error as e:
print(f"Sorgu hatası: {e}")
return []
finally:
conn.close()

if name == "main":
db = CalisanDB("localhost", "root", "sifre", "firma")
db.calisan_ekle("Ali Yılmaz", "Mühendis")
sonuc = db.pozisyona_gore_getir("Mühendis")
for c in sonuc:
print(f"\[{c\['id']}] {c\['isim']} - {c\['pozisyon']}")

Gerçek projelerde, veri erişim mantığını sınıflar içinde kapsüllemek ve OOP prensiplerini uygulamak önemlidir. CalisanDB sınıfı, bağlantı ve CRUD işlemlerini soyutlayarak kodun modülerliğini ve bakımını kolaylaştırır.
calisan_ekle yöntemi, SQL INSERT işlemini güvenli şekilde gerçekleştirir ve hata durumunda rollback ile veritabanı tutarlılığı korunur. pozisyona_gore_getir metodu, verileri Python sözlükleri olarak döndürür ve işleme veya algoritmalar için kullanılabilir. Bu yaklaşım, DAO veya Repository tasarım desenleri ile genişletilebilir ve mikroservis mimarisinde her sınıfın tek bir kaynak yönetmesini sağlar. Ayrıca, bağlantı havuzu ve indeksleme gibi optimizasyonlar uygulanabilir.

En iyi uygulamalar ve yaygın hatalar:

  • SQL sorgularında parametre kullanarak SQL enjeksiyonundan kaçının.
  • Bağlantıları her zaman kapatın ve try/except/finally blokları kullanın.
  • Doğru veri yapıları kullanın (listeler, sözlükler) ve algoritmaları optimize edin.
  • WHERE ve LIMIT kullanarak sorgu verimliliğini artırın.
  • OOP prensiplerini kullanarak sorumlulukları ayırın ve bakım kolaylığı sağlayın.
    Yaygın hatalar:

  • Bağlantıları kapatmamak ve hafıza sızıntısına yol açmak.

  • Sorgu için string birleştirme kullanmak.
  • commit unutmak ve işlemleri eksik bırakmak.
  • Python’da filtreleme yapmak yerine SQL optimizasyonu yapmamak.
    Performans ve güvenlik ipuçları: MySQL logları, Python logging, indeksleme ve kullanıcı izinleri minimuma indirilmeli, şifreler ortam değişkenlerinde saklanmalıdır.

📊 Referans Tablosu

Element/Concept Description Usage Example
Bağlantı Python ile MySQL bağlantısı kurar mysql.connector.connect(**config)
Cursor Sorgu yürütmek için arayüz cursor.execute("SELECT * FROM calisanlar")
SQL Parametreleri SQL enjeksiyonunu önler cursor.execute("WHERE id=%s", (id,))
Commit/Rollback İşlemleri doğrular veya geri alır conn.commit(), conn.rollback()
OOP ve DB CRUD işlemlerini sınıflarda yönetir class CalisanDB: metodlar

Python ve MySQL entegrasyonu, verimli ve güvenli backend uygulamaları geliştirmek için kritik bir beceridir. Bu eğitimde bağlantı yönetimi, sorgulama, transaction kontrolü ve veri yapılarının etkin kullanımı anlatıldı. OOP ile mantığı sınıflara ayırmak modülerlik ve ölçeklenebilirlik sağlar.
Öğrenilenler, SQLAlchemy gibi ORM’ler, indeksleme, mikroservis mimarileri ve güvenlik uygulamalarıyla daha ileri düzey projelere uygulanabilir. Küçük bir envanter yönetimi veya rezervasyon sistemi projesi yaparak bu bilgileri pratiğe dökmek önerilir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

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

2
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