Python İle MSSQL Veritabanı Bağlantısı ve SELECT,UPDATE,INSERT,DELETE İşlemleri

Python ile veritabanı işlemleri programlamada önemli bir konuma sahiptir. Bu dersimizde verileri veritabanında saklamak ve yeri geldiğinde kullanmak için Python MSSQL bağlantısını ve SELECT, INSERT, UPDATE, DELETE işlemlerini nasıl yapacağız öğreneceğiz.

Daha önceki dersimizde Python Mysql Veritabanı bağlantısını görmüştük (Link), bu dersimizde de Python MSSQL veritabanı bağlantısı dersi ile Python programlama konusunda önemli bir konuyu daha işlemiş bulunacağız.

1. pypyodbc Kütüphanesinin Kurulması ve Projeye Dahil Etme

MSSQL ile veritabanı işlemlerimizi rahatça yapabilmemiz için pypyodbc kütüphanemizi kurmamız gerekiyor. Bunun için aşağıdaki komutu kullanarak pip ile kütüphanemizi indirelim:

pip install pypyodbc

Artık kütüphanemizi kurduğumuza göre projemize kütüphaneyi dahil edebiliriz. Bunu yapabilmek için sayfamızın en üstüne aşağıdaki kodu ekleyelim:

import pypyodbc

Kütüphaneyi indirip projemize dahil ettikten sonra artık örneklerimize başlayabiliriz.

2. MySQL Veritabanı Bağlantısı

Artık veritabanımıza bağlantımızı yapacak bilgileri oluşturmanın zamanı geldi. Bunun için öncelikle hangi yöntemle veritabanına bağlanacağımızı seçmeliyiz. Nu iki yöntemi de sırasıyla görelim:

2.1 Windows Authentication İle Bağlantı

Server bağlantısını Windows yetkilendirmesiyle kullanıyorsanız aşağıdaki kodu kullanmalısınız.

db = pypyodbc.connect(
    'Driver={SQL Server};'
    'Server=serveradi;'
    'Database=veritabaniadi;'
    'Trusted_Connection=True;'
)

2.2 SQL Server Authentication İle Bağlantı

Server bağlantısını kullanıcı adı ve şifre ile kullanıyorsanız aşağıdaki kodu kullanmalısınız.

db = pypyodbc.connect(
    'Driver={SQL Server};'
    'Server=serveradi;'
    'Database=veritabaniadi;'
    'UID=kullaniciadi;'
    'PWD=parola;'
)

3. İmleç Oluşturma

Veritabanı bağlantısı ile komutlarımızı gönderebilmek için aracı bir imleç oluşturmamız gerekiyor. İmleç oluşturmak için aşağıdaki kodları kullanabilirsiniz.

imlec = db.cursor()

4. SELECT İşlemi

En çok kullanılan komut olan SELECT ile başlayalım. Bunun için ilk önce veritabanımızda örnek bir tablo oluşturalım. Ben kullanicilar isimli tabloyu oluşturmak ve basit olması için sadece id, ad, soyad, yas sütunlarını kullanmak istiyorum. İlk başta örnek olarak 2-3 tane veride ekleyebilirsiniz:

Tablomuz ve örnek verilerimiz hazırsa sorgu kodumuzu hemen gönderelim:

imlec.execute('SELECT * FROM Kisiler')

Bu isteğin ardından dönen sonuçları (dizi olarak döner) bir değişkene aktarmamız gerekiyor. Bunun içinde aşağıdaki gibi bir eşitleme yapıyoruz:

kullanicilar = imlec.fetchall()

Artık tablomuzdaki kullanıcılarımızı bir değişkene atadık ve sıra ekrana yazdırmaya geldi. Bunun için foreach döngümüzü kullanarak dönen diziyi ekrana yazdırıyoruz:

for i in kullanicilar:
    print(i)

Ekran çıktımız şu şekilde olacaktır:

Eğer dönen sonuçları daha detaylı kullanmak istiyorsanız sütun isimlerini kullanarak ekrana yazdırabilirsiniz. Bunun için:

for i in kullanicilar:
    print("isim: " + i['ad'] + " " + i['soyad']  + " --- " + "Yaş: " + str(i['yas']) )

Ekran çıktımız şu şekilde olacaktır:

!! Tek bir satır çekmek için fetchall() yerine fetchone() fonksiyonunu kullanabilirsiniz.

Özet olarak execute fonksiyonu ile hangi komutu gönderirseniz dönen sonuçlar komutun çıktısı olacaktır. Sizlerde istediğiniz komutları yukarıdaki örnekteki gibi gönderebilirsiniz.

5. INSERT İşlemi

Tablomuza yeni bir kullanıcı eklemek istediğimizde kullanmamız gereken kod yapısı aşağıdaki gibidir:

komut = 'INSERT INTO Kisiler VALUES(?,?,?)'
veriler = ('Özlem','ÖZ',25)

sonuc = imlec.execute(komut,veriler)
db.commit()

Tablonuza baktığınızda kullanıcınızı eklenmiş göreceksiniz.

Yukarıdaki kodda ? ile göndereceğimiz değerleri belli ediyoruz. Tablomuzda ad,soyad ve yas sütunları olduğu için ? ile belirlediğimiz değişkenleri bir sonraki parametrede yazarak gönderiyoruz (id sütununu identity ve auto increment bir değer ayarladığım için kendi komutumda id değeri göndermeye gerek yok). Yani insert işleminin kabaca syntax yapısı şu şekildedir:

imlec.execute = (SQL Komutu,Değişkenler)

En önemli kısmına gelirsek te db.commit() ile yaptığımız değişiklikleri veritabanına ileterek insert işlemini gerçekleştiriyoruz. Eğer commit() işlemini yapmazsanız insert işlemleriniz gerçekleşmez!

5. UPDATE İşlemi

Şimdi geldik tablomuzdaki mevcut bir değeri güncellemeye. Bu işlem için UPDATE komutunu kullanacağız. Aşağıdaki örneği hemen incelemeye başlayabilirsiniz:

sonuc = imlec.execute('UPDATE Kisiler SET yas = ? WHERE id = ?',(50,1))
db.commit()

print(str(sonuc) + " kullanıcı güncellendi")

Bu işlemin sonucunda ekran çıktılarımız şu şekilde olacaktır:

Gördüğünüz gibi klasik Update komutumuzu gönderdik ve işin kritik noktası olan commit() ile işlemlerimizi başarıyla tamamladık. Artık sıradaki işlemimize geçebiliriz.

6. DELETE İşlemi

Tablomuzdan bir değer silmek istersek DELETE komutunu kullanabiliriz. Hemen örneğimizi görelim.

sonuc = baglanti.execute('DELETE FROM Kisiler WHERE id = ?',(7,))
db.commit()

print(str(sonuc) + " kullanıcı silindi")

Tablomuza baktığımızda kullanıcının silinmiş olduğunu göreceksiniz

7. SONUÇ

Bu yazımızda Python ile MSSQL veritabanı bağlantısını ve temel işlemleri nasıl yapabileceğimizi öğrendik. Bunu yaparken de işin temelinin SQL komutlarımızı sorunsuz bir şekilde hazırlayıp execute() fonksiyonuyla bağlantısını tamamladığımız veritabanımıza göndermek olduğunu gördünüz. Sizde daha gelişmiş işlerinizde yukarıdaki örnekleri baz alabilir, takıldığınız yerleri aşağıya yorum bırakarak sorabilirsiniz.