Resim

MySQL Update (Veri Güncellemek)

MySQL Update (Veri Güncellemek)

Veritabanında bulunan bir kayıtta hata olduğunda veya bir bilgi değiştiğinde (örneğin kullanıcının e-posta adresi), bu veriyi değiştirmemiz gerekir. SQL'de bu işlem UPDATE komutu ile yapılır. Bu bölümde, musteriler tablosundaki mevcut bir kaydın (örneğin e-posta ve kayıt tarihi) nasıl güvenli bir şekilde güncelleneceğini ve bu değişikliği kalıcı hale getirmek için commit() işlemini nerede kullanacağımızı göreceğiz. Yeni bir Python dosyası oluşturalım (Örneğin: update_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. UPDATE Sorgusunu Tanımlama
    # Güncellenecek sütunlar SET ile, hangi kaydın güncelleneceği 
    # WHERE ile belirlenir.
    UPDATE_SQL = """
    UPDATE musteriler
    SET email = %s,
    kayit_tarihi = %s
    WHERE id = %s
    """   
    # 3. Yeni Değerleri Tanımlama
    yeni_email = "ahmetyilmaz@email.com"
    yeni_kayit_tarihi = "2023-10-10"
    guncellenecek_id = 1    
    # Sorguya gönderilecek değerleri bir tuple içinde toplama
    # Sıra, SQL sorgusundaki %s yer tutucularının sırasına uymalıdır!
    # (email, kayit_tarihi, id)
    gonderilecek_veri =(yeni_email,yeni_kayit_tarihi,guncellenecek_id)    
    # 4. Sorguyu Çalıştırma
    mycurser.execute(UPDATE_SQL, gonderilecek_veri)   
    # 5. Değişiklikleri Kaydetme
    # UPDATE, veritabanını değiştirdiği için mutlaka commit() 
    # kullanılmalıdır.
    mydb.commit()   
    # Başarı mesajı ve kaç kaydın etkilendiğini gösterme
    print(f"Başarıyla tamamlandı:{mycurser.rowcount}kayıt güncellendi.")
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, mevcut bir kaydı güvenli ve hedeflenmiş bir şekilde değiştirmeyi sağlar.

  1. UPDATE Sorgusunun Yapısı:

    • UPDATE musteriler: Hangi tablonun güncelleneceğini belirtir.

    • SET email = %s, kayit_tarihi = %s: Hangi sütunların hangi yeni değerlerle güncelleneceğini (%s yer tutucularını kullanarak) ayarlar.

    • WHERE id = %s: En kritik kısımdır. Güncellemenin hangi kaydı etkileyeceğini kesin olarak belirtir. Eğer WHERE koşulu kullanılmazsa, tablodaki TÜM kayıtlar güncellenir, bu da büyük bir veri kaybına yol açabilir.

  2. Veri Hazırlığı ve Güvenlik:

    • Yeni e-posta ve tarih bilgileri değişkenlere atanır.

    • gonderilecek_veri tuple'ı oluşturulurken, değişkenlerin sırasının SQL sorgusundaki %s yer tutucularının sırasıyla (email, kayit_tarihi, id) aynı olması sağlanır.

    • mycurser.execute(UPDATE_SQL, gonderilecek_veri) komutu, verileri güvenli bir şekilde sorguya yerleştirir.

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

    • UPDATE komutu bir veri değiştirme komutu (DML) olduğu için, yapılan bu değişikliğin veritabanında kalıcı olması için mutlaka mydb.commit() komutu kullanılmalıdır. Aksi takdirde güncelleme, bağlantı kapanınca kaybolur.

  4. Etkilenen Kayıt Sayısı:

    • mycurser.rowcount özelliği, UPDATE komutu sonucunda kaç satırın başarılı bir şekilde güncellendiğini gösteren bir tam sayı değeri döndürür. Bu, güncelleme işleminin başarıyla tamamlandığını doğrulamanın pratik bir yoludur.

  5. Kapanış: finally bloğu, işlemler bittikten sonra bağlantının ve imlecin kapatılmasını sağlayarak kaynak yönetimini tamamlar.

📹ÖĞ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?