Resim

MySQL Delete (Veri Silmek)

MySQL Delete (Veri Silmek)

Bazen veritabanında gereksiz veya hatalı kayıtları kaldırmamız gerekir. SQL'de bu işlem DELETE komutu ile gerçekleştirilir. Bu komut, uygulandığı kaydı veritabanından kalıcı olarak kaldırır. Bu bölümde, musteriler tablosundan belirli bir ID'ye sahip kaydı nasıl güvenli bir şekilde sileceğimizi ve bir veri değiştirme işlemi olduğu için mydb.commit() komutunun önemini bir kez daha vurgulayacağız. Bir Python dosyası oluşturalım (Örneğin: delete_data.py) ve başlayalım.

Kodun Tamamı

import mysql.connector 
from config import DB_CONFIG
try:
    # 1. Veritabanına Bağlanma
    mydb = mysql.connector.connect(**DB_CONFIG)
    mycurser = mydb.cursor()    
    # 2. DELETE Sorgusunu Tanımlama
    # WHERE koşulu ile silinecek kaydı hedefliyoruz.
    DELETE_SQL = "DELETE FROM musteriler WHERE id = %s"    
    # 3. Silinecek ID'yi Tanımlama
    # Tek elemanlı tuple'larda virgül (,) eklemeyi unutmayın!
    silinecek_id = (3,)     
    # 4. Sorguyu Çalıştırma
    # Güvenlik için, ID değerini execute metoduna ayrı bir 
    # parametre olarak iletiyoruz.
    mycurser.execute(DELETE_SQL, silinecek_id)    
    # 5. Değişiklikleri Kalıcı Olarak Kaydetme
    # DELETE bir DML komutu olduğu için commit zorunludur.
    mydb.commit()    
    # Başarı mesajı ve kaç kaydın silindiğini gösterme
    print(f"Başarıyla tamamlandı: {mycurser.rowcount} kayıt silindi.")
except mysql.connector.Error as err:
    # Bağlantı veya diğer hataları yakala
    print(f"Bağlantı hatası: {err}")
    print("Lütfen bağlantı ayarlarını kontrol edin.")
finally:
    # Bağlantıları kapatma
    if 'mycurser' in locals() and mycurser:
        mycurser.close()
    if 'mydb' in locals() and mydb and mydb.is_connected():
        mydb.close()
        print("MySQL bağlantısı kapatıldı.")

Kodun Açıklaması

Bu kod bloğu, veritabanından veri silme işlemini gerçekleştirir ve güvenliğe odaklanır.

  1. Güvenli Silme Sorgusu:

    • DELETE FROM musteriler WHERE id = %s sorgusu, yalnızca id'si belirtilen (%s yer tutucusu ile) kaydı silmeyi hedefler.

    • UYARI: WHERE koşulu olmadan DELETE FROM musteriler sorgusunu çalıştırmak, tablodaki TÜM kayıtları siler. Bu nedenle, silme işlemlerinde WHERE koşulunun kullanılması hayati öneme sahiptir.

  2. Hedef Belirleme ve Güvenlik:

    • silinecek_id = (3,) ile silinecek kaydın ID'si, yine güvenlik nedeniyle bir tuple içinde tanımlanır. Tek elemanlı olduğu için sonundaki virgül unutulmamalıdır.

    • mycurser.execute(DELETE_SQL, silinecek_id) komutu, ID değerini sorguya güvenli bir şekilde yerleştirir.

  3. Kalıcı Kayıt (mydb.commit()):

    • DELETE komutu veritabanı verisinde kalıcı bir değişiklik yaptığı için, bu değişikliğin sunucuya kesin olarak yazılması ve diğer oturumlar tarafından görülmesi için mutlaka mydb.commit() komutu çağrılmalıdır.

  4. Silinen Kayıt Sayısı:

    • mycurser.rowcount özelliği, DELETE komutunun kaç adet kaydı başarıyla sildiğini gösteren bir sayı döndürür. Bu, silme işleminin doğruluğunu kontrol etmede faydalıdır.

  5. Kapanış: finally bloğu, her işlem sonunda olduğu gibi bağlantıların güvenli bir şekilde sonlandırılmasını sağlar.

📹ÖĞRENDİKLERİNİZİ PEKİŞTİRİN:
Hemen aşağıdaki videomuza tıklayın. Adım adım ilerleyerek öğrendiklerinizi görsel olarak pekiştirin ve bir sonraki konuya hatasız bir şekilde geçin!



Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?