Python ile veritabanı işlemlerini otomatikleştirme: bağlantıdan zamanlamaya
Beceri rehberi

Python ile veritabanı işlemlerini otomatikleştirme: bağlantıdan zamanlamaya

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Python ile veritabanına bağlanmayı, sorguları zamanlamayı, veri yüklemeyi ve rapor üretmeyi; güvenli ve tekrar çalıştırılabilir bir akışla öğrenin.

Hangi veritabanı işleri otomatikleştirilir?

Veritabanıyla ilgili birçok iş düzenli ve kuralları belli olduğu için otomasyona uygundur: günlük raporların çekilmesi, dış kaynaktan gelen dosyaların tabloya yüklenmesi, eski kayıtların arşivlenmesi, tutarsız verilerin tespiti, yedekleme sonrası kontroller ve farklı sistemler arasında veri eşitleme. Bu işler elle yapıldığında hem zaman alır hem de unutulur ya da yanlış sorgu çalıştırılır.

Python, SQL'in yerini almaz; SQL'i çalıştıran, sonucu işleyen ve süreci yöneten bir katman olarak kullanılır. Sorgunun kendisi veritabanında hızlı çalışır, Python ise bağlantıyı kurar, parametreleri verir, sonucu bir veri tablosuna alır, kontrol eder ve çıktıyı dosya, e-posta ya da başka bir sisteme iletir.

Bağlantı katmanı: sürücüler ve ORM

Python bir veritabanına katmanlı bir yapıyla bağlanır. En altta veritabanına özgü bir sürücü bulunur: PostgreSQL için psycopg, MySQL ve MariaDB için ilgili sürücüler, SQL Server için ODBC tabanlı bağlantılar gibi. Bunların üstünde SQLAlchemy gibi bir araç, farklı veritabanlarına ortak bir arayüz ve bağlantı havuzu sunar. İsteğe bağlı olarak en üstte tabloları Python nesnelerine eşleyen ORM katmanı çalışır.

Otomasyon betikleri için çoğu zaman düz SQL sorguları ve SQLAlchemy bağlantısı yeterlidir. Sonuçları analiz edecekseniz pandas ile sorgu sonucunu doğrudan veri tablosuna alıp yine tabloyu veritabanına yazmak pratik bir yoldur. ORM, uygulama geliştirmede avantaj sağlar; basit bir rapor betiğinde ek karmaşıklık getirebilir.

Adım adım örnek: günlük satış özeti ve veri yükleme

Örneğin bir şirket, her sabah önceki günün satışlarını özetleyip yöneticilere göndermek ve aynı zamanda bir ortaktan gelen CSV dosyasını sipariş tablosuna yüklemek istiyor. Akış şöyle kurulur:

  • Bağlantı bilgisini yapılandırma dosyasından ya da ortam değişkeninden okuyun.
  • Yükleme işi için dosyayı okuyun, sütun tiplerini doğrulayın, hatalı satırları ayrı bir dosyaya ayırın.
  • Geçici (staging) bir tabloya yükleyin, kontrol sorguları çalıştırın, sonra asıl tabloya taşıyın.
  • Özet sorgusunu parametreli olarak çalıştırın: tarih aralığı kodda sabit yazılmaz, parametre olarak verilir.
  • Sonucu veri tablosuna alın, toplamları kontrol edin ve Excel ya da PDF olarak kaydedin.
  • Raporu e-postayla gönderin ve işlem özetini günlüğe yazın.

Geçici tabloya yüklemek, hatalı veriyle asıl tabloyu kirletme riskini düşürür; kontrol aşamasından geçmeyen veri asıl tabloya hiç girmez.

Güvenlik: parametreli sorgu ve yetki

Veritabanı otomasyonunda en önemli güvenlik kuralı, değerlerin sorgu metnine doğrudan eklenmemesidir. Kullanıcı girdisini ya da dosyadan gelen değeri sorgu cümlesine birleştirmek SQL enjeksiyonuna yol açar. Bunun yerine sürücünün parametre mekanizması kullanılır; değerler sorgudan ayrı gönderilir.

İkinci kural, betik için en dar yetkiyi tanımlamaktır. Yalnızca rapor çeken bir betiğe okuma yetkisi verilir; silme ve şema değiştirme yetkisi verilmez. Parola kodun içinde bulunmaz, kimlik bilgileri güvenli bir yapılandırmada tutulur. Canlı veritabanında silme ya da toplu güncelleme yapan betikler, önce bir test ortamında ve önce bir yedek alındıktan sonra denenir.

Tekrar çalıştırılabilir ve güvenilir betikler

Otomasyon betiği, bir kez değil tekrar tekrar çalışacağı varsayımıyla yazılır. Bu yüzden işlemler tekrar çalıştırıldığında aynı sonucu vermeli (idempotent) olmalıdır: aynı dosya yeniden yüklendiğinde mükerrer kayıt oluşmamalı. Bunu sağlamak için benzersiz anahtarlar, güncelle-ya-da-ekle mantığı ve işlenen dosyaların kaydı kullanılır.

Birbirine bağlı yazma işlemleri bir işlem (transaction) içinde yapılır: hepsi başarılı olursa kayıt kalıcı olur, biri hata verirse tümü geri alınır. Böylece yarım kalmış veri oluşmaz. Hatalarda betik durup anlaşılır bir mesaj bırakmalı, hata ayrıntısı günlüğe yazılmalı ve sorumlu kişiye bildirim gitmelidir.

Zamanlama ve izleme

Betik elle çalıştırılıyorsa otomasyon eksiktir. İşletim sistemi görev zamanlayıcısı, sunucudaki zamanlama araçları ya da iş akışı yönetim platformları betiği belirli saatlerde başlatır. Zamanlamada veritabanının yoğun olmadığı saatleri seçmek, ağır sorguların canlı kullanıcıyı yavaşlatmasını önler.

İzleme için her çalıştırmada başlangıç ve bitiş zamanı, işlenen kayıt sayısı ve hata bilgisi kaydedilir. Beklenmedik durumları yakalamak için basit kontroller eklenir: sonuç boş mu, toplam olağan aralığın dışında mı, çalışma süresi alışılmadık biçimde uzadı mı. Bu kontroller sessizce yanlış çalışan bir betiğin fark edilmesini sağlar.

Sık yapılan hatalar

Yaygın hata, tüm veriyi tek seferde belleğe almaktır. Büyük tablolarda sorguyu parça parça okumak ve yazmak gerekir. Bir diğeri, tarih ve saat dilimi karışıklığıdır: sunucu, veritabanı ve betik farklı saat dilimleri kullanıyorsa dünün raporu eksik ya da fazla çıkabilir. Saat dilimini açıkça belirlemek bu sorunu önler.

Bağlantıları kapatmamak veya havuz kullanmamak, kaynak tükenmesine yol açar. Canlı veritabanında doğrudan test etmek, silme ve güncelleme işlemlerinde koşul yazmayı unutmak da ciddi sonuçlar doğurur; bu yüzden değişiklik yapan sorgular önce seçme sorgusuyla denenerek hangi satırların etkileneceği görülür. Son olarak, betiği anlatan bir açıklama olmadan bırakmak, yazan kişi ayrıldığında bakımı imkânsız kılar.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

Python ile Robotic Process Automation (RPA) Eğitimi programının modül başlıkları arasında Veritabanı Otomasyonu doğrudan yer alır. Program Python temelleri ve orta seviye Python ile başlar; belge otomasyonu (Excel, Word vb.), PDF otomasyonu, CSV ve JSON otomasyonu, web kazıma, otomatik e-postalar ve GUI otomasyonuna devam eder.

Bu kapsam, veritabanından çekilen verinin rapora, e-postaya ya da başka bir belgeye dönüştüğü akışları tek çatı altında çalışmaya imkân verir. Raporlama, veri hazırlama ve operasyon desteği yapan ekipler için uygun bir zemindir.

İlgili Mindset programı

Python ile Robotic Process Automation ( RPA ) Eğitimi

Sık sorulanlar

Sık sorulan sorular

Python ile hangi veritabanlarına bağlanılabilir?

Python, yaygın ilişkisel veritabanlarının çoğuna sürücüler üzerinden bağlanır: PostgreSQL, MySQL, MariaDB, SQL Server ve Oracle gibi. SQLAlchemy ortak bir arayüz sunduğu için farklı veritabanları arasında geçiş yapmak kolaylaşır. Belge veritabanları için de ayrı kütüphaneler bulunur.

SQL bilmeden Python ile veritabanı otomasyonu yapılabilir mi?

Sınırlı ölçüde. ORM araçları basit işlerde SQL yazmayı azaltır, ancak sorguyu doğru kurmak, sonucu kontrol etmek ve performans sorunlarını anlamak için temel SQL bilgisi gerekir. Önce SELECT, JOIN, GROUP BY ve temel güncelleme mantığını öğrenmek otomasyonu çok kolaylaştırır.

SQL enjeksiyonundan nasıl korunurum?

Sorgu metnine değer birleştirmeyin; sürücünün parametreli sorgu özelliğini kullanın. Değerler sorgudan ayrı gönderilir ve komut olarak yorumlanmaz. Ayrıca betiğe yalnızca ihtiyacı olan yetkiyi verin, böylece bir hata ya da saldırı durumunda zarar sınırlı kalır.

Betik yarıda hata verirse veri bozulur mu?

Birbirine bağlı yazma işlemlerini bir işlem (transaction) içinde yaparsanız bozulmaz; hata durumunda işlemin tamamı geri alınır. Büyük yüklemelerde önce geçici tabloya yazıp kontrolden sonra asıl tabloya taşımak da güvenli bir yoldur. Hata ayrıntısı günlüğe kaydedilmelidir.

pandas ile veritabanına veri yazmak doğru bir yöntem mi?

Orta ölçekli veri ve düzenli yüklemeler için pratik bir yöntemdir. pandas, tabloyu SQLAlchemy bağlantısı üzerinden yazabilir. Çok büyük hacimlerde veritabanının kendi toplu yükleme araçları daha hızlıdır; tür eşlemelerini ve mükerrer kaydı kontrol etmeyi unutmayın.

Python ile Veritabanı Otomasyonu: Sorgu, Yükleme, Raporlama