- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
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.
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ı.")
Bu kod bloğu, veritabanından veri okumanın temel mekaniğini gösterir.
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.
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.
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.
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.
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.
Kapanış: finally bloğu, işlemin sonunda bağlantının güvenli bir şekilde kapatılmasını sağlar.
Yorumlar
Yorum Gönder