- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
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.
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ı.")
Bu kod bloğu, mevcut bir kaydı güvenli ve hedeflenmiş bir şekilde değiştirmeyi sağlar.
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.
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.
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.
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.
Kapanış: finally bloğu, işlemler bittikten sonra bağlantının ve imlecin kapatılmasını sağlayarak kaynak yönetimini tamamlar.
Yorumlar
Yorum Gönder