Python ile SQL Server’a Veri Yazma

Giriş

Python, geniş kütüphaneleri ve modüler yapısıyla veri tabanlarıyla etkileşim kurmayı kolaylaştırır. SQL Server, Microsoft tarafından geliştirilen ve işletmelerde sıklıkla kullanılan güçlü bir veri tabanı yönetim sistemidir. Python ile SQL Server’a veri yazmak, birçok uygulama için önemli bir beceridir; çünkü veri akışını otomatikleştirmek ve analiz için veriyi daha erişilebilir hale getirmek, günümüz iş dünyasında kritik bir rol oynamaktadır.

Bu yazıda, SQL Server’a Python kullanarak veri yazmanın farklı yöntemlerini ele alacağız. Python’da SQL Server’a veri yazmak için yaygın olarak kullanılan kütüphaneler olan pyodbc ve SQLAlchemy’yi inceleyeceğiz. Her iki kütüphane de bağlantı kurma, veri yazma ve hata ayıklama konularında size detaylı bilgi sağlayacak.

Öncelikle, Python ile SQL Server’a bağlanmak için gerekli olan kütüphaneleri yükleyeceğiz. Ardından veri yazma işlemlerine geçerek, temel örneklerle konuyu pekiştireceğiz. Hatalı senaryolar ve bunların çözümleri de yazının önemli bir parçasını oluşturacak.

Python ile SQL Server’a Bağlantı Kurma

Python’da SQL Server ile bağlantı kurmak için öncelikle gerekli kütüphaneleri yüklememiz gerekiyor. Bu amaçla en yaygın olarak kullanılan iki kütüphane pyodbc ve SQLAlchemy’dir. Pyodbc, ODBC (Open Database Connectivity) arayüzünü kullanarak SQL Server gibi veri tabanlarına bağlanmanızı sağlar. SQLAlchemy ise, bir ORM (Object Relational Mapping) aracı olarak, veri tabanı ile uygulama arasında daha yüksek seviyeli bir soyutlama sağlar.

İlk olarak, pyodbc ile bir bağlantı oluşturmanın adımlarını inceleyelim. Pyodbc kütüphanesini yüklemek için şu komutu terminal üzerinden çalıştırabilirsiniz:

pip install pyodbc

Yükleme tamamlandıktan sonra, SQL Server’a bağlanmak için bir bağlantı dizesi oluşturmalısınız. Aşağıdaki gibi basit bir bağlantı kurabilirsiniz:

import pyodbc

# SQL Server bağlantı dizesi
server = 'server_adresi'
database = 'veritabani_adi'
username = 'kullanici_adi'
password = 'sifre'

conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' + server + ';DATABASE=' + database + ';UID=' + username + ';PWD=' + password)

Bağlantı sağlandıktan sonra, veri yazma işlemlerine geçebilirsiniz. Şimdi SQLAlchemy ile bağlantı kurmayı da inceleyelim:

pip install sqlalchemy

SQLAlchemy’yi yükledikten sonra bağlantı dizesini aşağıdaki gibi oluşturabilirsiniz:

from sqlalchemy import create_engine

engine = create_engine('mssql+pyodbc://{username}:{password}@{server}/{database}?driver=ODBC+Driver+17+for+SQL+Server')

Buna ek olarak, SQLAlchemy ile bağlantı açmak ve kapatmak da oldukça basittir. Bu iki yöntemle de bağlantı kurmak için aldığınız dize ve bilgileri kullanabilirsiniz.

Veri Yazma İşlemleri

Bağlantıyı kurduktan sonra, artık SQL Server’a veri yazma işlemlerini gerçekleştirebiliriz. Hem pyodbc hem de SQLAlchemy kullanarak veri eklemek için farklı yöntemler bulunuyor. İşte her iki yöntem için basit bir örnek:

Pyodbc ile Veri Yazma

Pyodbc kullanarak veri yazmak için öncelikle bir SQL INSERT sorgusu yazmalısınız. Aşağıda, pyodbc ile bir veri ekleme işleminin adımlarını bulabilirsiniz:

cursor = conn.cursor()

# Eklemek istediğiniz verinin sorgusu
insert_query = "INSERT INTO tablo_adi (kolon1, kolon2) VALUES (?, ?)"

# Veriyi ekle
veri = ('deger1', 'deger2')
cursor.execute(insert_query, veri)

# Değişiklikleri kaydet
conn.commit()
# Kursörü kapat
cursor.close()

Yukarıdaki kodda, bir tabloya veri eklemek için önce bir SQL sorgusu oluşturduk. Ardından, eklemek istediğimiz verileri bir tuple halinde sunduk ve execute() metodu ile sorguyu çalıştırdık. Değişiklikleri kalıcı hale getirmek için commit() metodunu da kullanmayı unutmayın.

SQLAlchemy ile Veri Yazma

SQLAlchemy kullanarak veri yazmanın yöntemi ise biraz daha soyutlamaya sahiptir. SQLAlchemy, tabloları ve kolonları Python nesneleri olarak temsil eder. Aşağıda bir örnek kodu bulabilirsiniz:

from sqlalchemy import Table, Column, Integer, String, MetaData

# MetaData nesnesi oluştur
metadata = MetaData()

# Tablo tanımını yap
tablo = Table('tablo_adi', metadata,
              Column('kolon1', String),
              Column('kolon2', String))

# Bağlantıyı aç ve veriyi ekle
with engine.connect() as conn:
    insert = tabel.insert().values(kolon1='deger1', kolon2='deger2')
    conn.execute(insert)

Burada kullanılan `Table` nesnesi, veri tabanındaki tabloyu temsil ediyor ve `Column` nesneleri ise tablo içindeki kolonları belirtmektedir. Sonrasında `insert()` metodu ile veri ekleme işlemini gerçekleştiriyoruz.

Hatalar ve Hata Ayıklama

Veri yazma işlemleri sırasında bazı hatalar ortaya çıkabilir. Bu hatalar genellikle bağlantı sorunları, yanlış SQL sorguları veya veri tipinin uyumsuzluğundan kaynaklanır. Aşağıda bazı yaygın hatalar ve çözümleri bulunmaktadır:

Bağlantı Sorunları

Eğer SQL Server’a bağlantı kuramıyorsanız, öncelikle bağlantı dizesinizi kontrol edin. Sunucu adresinin doğru olup olmadığını, kullanıcı adı ve şifreyi de gözden geçirin. Ayrıca, SQL Server’ın ODBC sürücüsünün yüklü olduğundan emin olun.

SQL Syntax Hataları

SQL sorgusunda hata olduğunu düşünüyorsanız, sorgunuzu doğrulamak için SQL Server Management Studio (SSMS) gibi bir araç kullanarak sorgunuzu çalıştırmayı deneyin. Ayrıca, pyodbc veya SQLAlchemy kullandığınızda sorgularınızda dikkat etmeniz gereken özel karakterlere ve kaçış sekanslarına dikkat edin.

Veri Tipi Uyumsuzlukları

Veri tabanındaki kollonların tipleri ile eklemeye çalıştığınız verilerin tipleri arasında bir uyumsuzluk olması durumunda hatalarla karşılaşabilirsiniz. Örneğin, bir integer kolona string bir değer eklemeye çalışmak bu tür bir hata almanıza neden olacaktır. Ekleme işlemi yapmadan önce verilerin tiplerini kontrol etmek her zaman iyi bir uygulamadır.

Sonuç

Bu yazıda Python ile SQL Server’a veri yazmanın başlıca yöntemlerini ele aldık. Pyodbc ve SQLAlchemy kütüphanelerini kullanarak veri tabanına veri ekleme işlemlerini ayrıntılı bir şekilde incelemiş olduk. Hatalar ve çözüm yöntemleri ile birlikte, SQL Server ile Python arasında veri akışını nasıl yöneteceğinizi de öğrenmiş oldunuz.

Yazının başında belirttiğim gibi, veri akışını otomatikleştirmek ve analiz için veriyi daha erişilebilir hale getirmek önemlidir. Python, bu konuda bizi büyük kolaylıklar sağlayan güçlü bir araçtır. Projelerinizde bu yöntemleri kullanarak verinizi daha etkili bir şekilde yönetebilir, analiz edebilir ve işleyebilirsiniz.

Son olarak, öğrendiklerinizi projelerinizde denemeye ve pekiştirmeye davet ediyorum. Python ve SQL Server kombinasyonu ile veri işlemleri yaparken karşılaşacağınız farklı senaryoları çözümlemek size yeni bakış açıları kazandıracak ve becerilerinizi geliştirecektir.

Scroll to Top