MySQL’den CSV’ye Python ile Veri Aktarma

Giriş: MySQL ve CSV Nedir?

Veri yönetimi ve analizinde önemli bir rol oynayan MySQL, ilişkisel veritabanı yönetim sistemleri arasında en çok tercih edilenlerden biridir. Birçok uygulamada veri depolamak ve organize etmek için kullanılır. Diğer yandan, CSV (Comma-Separated Values) dosya formatı, verileri tablo şeklinde düzenlemek için basit ve yaygın bir yöntemdir. CSV formatının önemli bir avantajı, hemen hemen her platformda açılabilmesi ve birçok yazılım tarafından desteklenmesidir. Bu nedenle, verilerin MySQL’den CSV’ye aktarılması, veri transferi ve analiz süreçlerini kolaylaştırır.

Python, veri analizi ve otomasyonu için güçlü bir dil olarak öne çıkmaktadır. Çok sayıda kütüphane ve modül ile donatılmış olan Python, MySQL veritabanlarıyla etkileşimde bulunmak ve bu verileri daha basit formatlarda işlemek için ideal bir seçenektir. Bu yazıda, MySQL’den CSV’ye veri aktarımının nasıl yapılacağı adım adım açıklanacaktır.

Bu işlem, genellikle veri raporlaması ve analizi için gereklidir. Örneğin, bir işletme satış verilerini analiz etmek istediğinde, bu verilerin CSV formatında dışa aktarılması işlemi oldukça faydalıdır. Gelecekte daha fazla veri analizi ve işleme yapma amacıyla, bu tür aktarım süreçlerini öğrenmek büyük önem taşımaktadır.

MySQL’e Bağlanma

Python ile MySQL veritabanına bağlanmak için öncelikle Python’un MySQL’le etkileşim kurmasını sağlayacak olan bir kütüphane kurmalıyız. En popüler olanlardan biri ‘mysql-connector-python’ kütüphanesidir. Bu kütüphaneyi kurmak için terminalde şu komutu kullanabilirsiniz:

pip install mysql-connector-python

Kurulumdan sonra, MySQL veritabanına bağlanmak için aşağıdaki kodu kullanabilirsiniz:

import mysql.connector
db = mysql.connector.connect(
host='localhost',
user='kullanici_adi',
password='parola',
database='veritabani_adi'
)

Bu kod, yerel MySQL sunucunuza bağlantı sağlayacak. ‘kullanici_adi’, ‘parola’ ve ‘veritabani_adi’ kısımlarını kendi verilerinize göre doldurmalısınız.

Bağlantı sağlandığında, artık veritabanını sorgulayabiliriz. Bunun için bir imleç (cursor) oluşturmalıyız. İmleç, veritabanında sorgular çalıştırmak için kullanılan bir nesnedir:

cursor = db.cursor()

Veri Sorgulama

MySQL veritabanından veri çekmek için SQL sorguları kullanılır. Örneğin, ‘products’ adlı bir tablo var ve bu tablodan tüm verileri çekmek istiyorsak, aşağıdaki sorguyu kullanabiliriz:

cursor.execute('SELECT * FROM products')

Bu sorguyu çalıştırdıktan sonra, sonuçları almak için fetch metodlarını kullanabiliriz. Bu metotlar, sorgudan dönen verileri almanızı sağlar:

records = cursor.fetchall()

Yukarıdaki kod, -eğer veritabanında kayıt varsa- tüm kayıtları çekecektir. Her bir kayıt bir tuple olarak döner. Örneğin, bir ürün tablosunda üç sütun (id, isim, fiyat) olduğunu düşünürsek, sonuç şöyle görünebilir:

[(1, 'Ürün A', 10.00), (2, 'Ürün B', 15.00)]

Artık verilerimizi CSV formatına dışa aktarabileceğimiz bir şekle getirdik. Ancak öncelikle bu verileri işlemek için Python’da ‘csv’ modülünü kullanacağız.

CSV Dosyasına Yazma

Python’un yerleşik ‘csv’ modülü, CSV formatında dosya oluşturmak için oldukça kullanışlıdır. Veritabanından çektiğimiz verileri CSV dosyasına yazmak için aşağıdaki kodu kullanabiliriz:

import csv
with open('output.csv', mode='w', newline='') as file:
    writer = csv.writer(file)
    # Sütun başlıklarını yaz
    writer.writerow(['ID', 'İsim', 'Fiyat'])

Bu kod, ‘output.csv’ adında bir dosya oluşturur. ‘mode’ parametresi ‘w’ ile dosya yazma modunda açılır. ‘newline’ parametresi Windows işletim sistemlerinde gereklidir. Ardından, bir yazar (writer) nesnesi oluşturularak, başlık satırı eklenir.

Şimdi, veritabanından çektiğimiz her kaydı CSV dosyasına yazalım. Bunun için döngü kullanarak her bir kaydı yazabiliriz:

    for record in records:
        writer.writerow(record)

Böylece tüm verilerimizi CSV dosyasına aktarmış olacağız. Sonunda dosya otomatik olarak kapatılacak.

Tam Kod Örneği

Tüm süreci birleştirerek tam bir kod örneği oluşturalım:

import mysql.connector
import csv
# MySQL veritabanına bağlan
db = mysql.connector.connect(
    host='localhost',
    user='kullanici_adi',
    password='parola',
    database='veritabani_adi'
)
cursor = db.cursor()
# Veri çek
cursor.execute('SELECT * FROM products')
records = cursor.fetchall()
# CSV dosyasına yaz
with open('output.csv', mode='w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['ID', 'İsim', 'Fiyat'])
    for record in records:
        writer.writerow(record)

Bu kod parçası, veritabanındaki ürünleri ‘output.csv’ dosyasına aktaracaktır. Kodu çalıştırdıktan sonra, proje dizininde ‘output.csv’ adlı dosyayı bulmalısınız.

Hatalar ve Çözümleri

Herhangi bir program yazarken beklenmedik hatalarla karşılaşabilirsiniz. MySQL bağlantısında en sık karşılaşılan hatalardan biri ‘Access denied for user’ hatasıdır. Bu hata genellikle yanlış kullanıcı adı veya parola nedeniyle meydana gelir. Bu durumu kontrol etmek için doğru bilgileri girdiğinizden emin olun.

Bir diğer yaygın hata ise ‘database not found’ hatasıdır. Bu hata, bağlanmaya çalıştığınız veritabanının mevcut olmamasıyla ilgilidir. Veritabanı adlarını doğru girdiğinizden emin olun ve üzerinde çalıştığınız veritabanını kontrol edin.

CSV dosyasını yazarken ‘Permission denied’ hatasıyla da karşılaşabilirsiniz. Bu durumda, dosyayı yazmaya çalıştığınız dizinde gerekli izinlerinin olup olmadığını kontrol edin. Eğer izin yoksa, başka bir dizinde deneyebilirsiniz.

Sonuç

MySQL’den CSV’ye veri aktarmak, Python ile oldukça basit bir süreçtir. Bağlantı kurmaktan, verileri sorgulamaktan ve CSV dosyasına yazmaya kadar her adımı detaylı bir şekilde inceledik. Bu süreç, veri analizi yapmak isteyenler için son derece yararlı olabilir ve veri yönetiminizi önemli ölçüde kolaylaştırabilir. Gelişen veri dünyasında, bu tür becerileri öğrenmek size önemli avantajlar sağlayacaktır.

Son olarak, gerek Python, gerekse veri bilimi ve analiz konularında daha fazla bilgi edinmek için kaynakları incelemekten çekinmeyin. Kendi projelerinizi geliştirerek öğrenmek, bu tür bilgilerinizi pekiştirmenin en iyi yoludur. Unutmayın, her zaman yeni şeyler öğrenmek ve denemeler yapmak için bir fırsat vardır!

Scroll to Top