Resim

MySQL Select (Veri Çekmek/Okumak)

MySQL Select (Veri Çekmek/Okumak)

CRUD (Create, Read, Update, Delete) işlemlerinin 'R'si olan Okuma (Read), veritabanı kullanımının temelidir. Bu bölümde, musteriler tablosuna eklediğimiz tüm verileri geri almak için SELECT sorgusunu nasıl kullanacağımızı göreceğiz. MySQL'den gelen sonuçları Python'da nasıl işleyeceğimizi ve bir for döngüsü kullanarak ekrana nasıl düzenli bir şekilde yazdıracağımızı adım adım inceleyeceğiz.

Kodun Tamamı

select_data.py adında yeni bir dosya oluşturalım:

import mysql.connector 
from config import DB_CONFIG
# Veri çekme işlemini try-except bloğu içine alıyoruz
try:
    # 1. Veritabanına Bağlanma
    mydb = mysql.connector.connect(**DB_CONFIG)
    mycurser = mydb.cursor()
    
    # 2. SELECT Sorgusunu Tanımlama
    # '*'işareti,tablodaki TÜM sütunları çekmek istediğimizi belirtir.
    # Kayit_tarihi hariç diğer sütunları çekebiliriz.
    SELECT_SQL = "SELECT id, isim, email FROM musteri" 
 
    # Not: Güvenlik için, bu sorguda parametre olmadığı için 
    # 'veri' değişkeni göndermeyeceğiz.
    # Ancak WHERE koşulu kullanılırsa parametre kullanılmalıdır.
    mycurser.execute(SELECT_SQL) 
    
    # 3. Sonuçları Çekme (fetchall())
    # Çekilen tüm satırları içeren bir liste döndürür.
    sonuclar = mycurser.fetchall()
    
    # 4. Çekilen Veriyi Python'da Yazdırma
    # Gelen 'sonuclar' listesi, her satırı temsil eden 
    # tuple'lardan oluşur.
    print("\n--- Veritabanı Kayıtları ---\n")    
    if sonuclar:
        for kayit in sonuclar:
            # kayit[0] = id, kayit[1] = isim, kayit[2] = email
            print(f"ID:{kayit[0]}, İsim:{kayit[1]},E-mail:{kayit[2]}")
    else:
        print("Tabloda hiç kayıt bulunamadı.")    
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 okumanın temel mekaniğini gösterir.

  1. Bağlantı ve İmleç: Her zamanki gibi, DB_CONFIG üzerinden veritabanına bağlanılır ve sorgu çalıştırmak için mycurser oluşturulur.

  2. SELECT * FROM musteri Sorgusu:

    • SELECT: Veri okuma komutudur.

    • * (Yıldız): musteri tablosundaki tüm sütunları çekmek istediğimizi belirtir. Eğer sadece isim ve e-posta çekilmek istenseydi, sorgu SELECT isim, email FROM musteri olurdu.

  3. Sorguyu Çalıştırma: mycurser.execute(SELECT_SQL) komutu sorguyu veritabanına gönderir. Veri okuma sorgularında, commit() komutuna gerek yoktur, çünkü veritabanında bir değişiklik yapılmaz.

  4. Sonuçları Alma (mycurser.fetchall()):

    • fetchall() metodu, SELECT sorgusunun döndürdüğü tüm sonuç satırlarını bir liste (Python listesi) olarak çeker.

    • Bu liste içindeki her bir eleman, veritabanındaki bir kaydı temsil eden bir tuple (demet)'tir.

    • Not: Sadece tek bir satır çekmek için fetchone() veya belirli bir sayıdaki satırı çekmek için fetchmany(sayı) metotları da kullanılabilir.

  5. Veriyi İşleme:

    • if sonuclar: kontrolü ile tabloda kayıt olup olmadığı denetlenir.

    • for kayit in sonuclar: döngüsü, çekilen her bir kaydı (tuple) tek tek dolaşır.

    • kayit[0], kayit[1], kayit[2] gibi indeksler kullanılarak tuple içindeki sütun değerlerine erişilir. (Örneğin, kayit[0] id sütununa, kayit[1] isim sütununa karşılık gelir.) Bu değerler, Python'ın print fonksiyonu ile formatlı bir şekilde ekrana yazdırılır.

  6. Kapanış: finally bloğu, işlemin sonunda bağlantının güvenli bir şekilde kapatı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?