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

Python ile ne istersek yapabiliyoruz ve bunlardan birçoğunu önceki yazılarımızda işledik. Peki verilerimizi veritabanında saklamak ve yeri geldiğinde kullanmak için MySQL bağlantısını ve SELECTINSERTUPDATEDELETE işlemlerini nasıl yapacağız? Öğrenmek için hemen başlayalım.

Konusu ne olursa olsun bir web sayfası kodluyorsanız birçok bilgiyi saklamak ve yeri geldiğinde kullanmak için bir veritabanına ihtiyaç duyacaksınız. Bu veritabanı SQLite, MsSQL, MySQL veya Oracle gibi herhangi bir veritabanı mimarisi olabilir. Hangisini seçeceğiniz tamamen sizin bilgi birikiminize ve keyfinize kalmış bir durum. Lakin bu konuda biz birçok web sitesinin öncelikli tercihi olan MySQL ile başlayacağız. İleride diğer veritabanlarına da değineceğiz ama öncelikli olarak MySQL veritabanı bağlantımızla başlayalım.

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

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

pip install PyMySQL

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 pymysql.cursors

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 aşağıdaki kod blogunu ekleyerek kullanıcı adı, şifre ve veritabanı adını kendinize göre düzenlemelisiniz:

# Veritabanı bağlantı bilgileri
db = pymysql.connect(host='localhost',
                             user='dbkullaniciadi',
                             password='dbparolasi',
                             db='dbadı',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

# İşaretçimizi oluşturalım
baglanti = db.cursor()

Eğer bilgiler doğruysa python dosyanızı çalıştırdığınızda bir hata almamanız gerekiyor. Boş bir çıktı görüyorsanız ilk aşamayı başarıyla geçtiniz demektir:

3. 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 idadyas 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:

baglanti.execute('SELECT * FROM kullanicilar')

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 = baglanti.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("Ad: " + i['ad'] + " --- " + "Yaş: " + str(i['yas']) )

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

Ö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.

4. INSERT İşlemi

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

sonuc = baglanti.execute('INSERT INTO kullanicilar VALUES(%s,%s,%s)',(None,'Özlem',25))
db.commit()

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

Sonucumuza bakarsak:

Yukarıdaki kodda %s ile göndereceğimiz değerleri belli ediyoruz. Tablomuzda id,ad ve yas stürunları olduğu için %s ile belirlediğim değişkenleri bir sonraki parametrede yazarak gönderiyoruz. Yani insert işleminin kabaca syntax yapısı şu şekildedir:

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

Bu fonksiyon çalıştığında etkilenen girdi sayısını da sonuc değişkenimize aktarıyoruz. Bu sonuc değişkeni ile tabloya veri eklenip eklenmediğini kontrol edebilirsiniz. Eğer sonuç 0 ise tabloya eklenememiştir.

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!

Unutmadan söyleyelim ki None değerini tablodaki id sütunumu auto increment ayarladığım için boş gönderiyorum, böylece veri eklediğimde id değeri otomatik olarak 1 artıyor.

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 = baglanti.execute('UPDATE kullanicilar SET yas = %s WHERE id = %s',(50,5))
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 kullanicilar WHERE id = %s',(1,))
db.commit()

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

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

Tablomuzdaki kayıt başarıyla silinmiş.

7. SONUÇ

Bu yazımızda Python ile MySQL 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.