Comment on page
# Python MySQL Veritabanı
Python MySQL veritabanı işlemlerini öğreniyoruz.
MySQL, programlamada en yaygın kullanılan ve en popüler ilişkisel veritabanı yazılımıdır. Sektörün önde gelen firmalarının neredeyse tamamına yakını MySQL ile beraber çalışır vaziyetteler. Hem bu sebeple hem de sunduğu güçlü çözümlerle bizde bu dersimizde MYSQL ve Python ilişkisini anlatacağız.

MySQL kullanan siteler
- Açık kaynak kodludur ve ücretsizdir. (Ücretli versiyonu da mevcuttur)
- Farklı karakter setlerini (iso8859-9, utf-8, latin-5 …) destekler
- Çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahiptir
- Güvenlik açısından kendini kanıtlamıştır
- Döküman ve eğitim konusunda geniş kaynağa sahiptir
- Birçok programlama dili ve platformla birlikte kullanılabilir.
MySQL veritabanı yazılımını Python ile birlikte nasıl kullanacağımızı aşama aşama görelim.
MySQL ile veritabanı işlemlerimizi rahatça yapabilmemiz için PyMySql kütüphanemizi projemize dahil etmemiz gerekiyor.
import pymysql.cursors
Eğer kütüphane bilgisayarınızda kurulu değilse pip kullanarak bilgisayarınıza yükleyebilirsiniz.
pip install PyMySQL
Artık veritabanımıza bağlantımızı yapacak bilgileri oluşturmanın zamanı geldi. Bunun için aşağıdaki kod blokunu 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)
Veritabanına bağlandıktan sonra üzerinde işlem yapabilmek için
cursor()
fonksiyonu ile imleç oluşturmamız gerekiyor.imlec = 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 iki aşamayı başarıyla geçtiniz demektir:

Başarılı İşlem
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. Örnek olarak kullanicilar isimli tabloyu oluşturmak ve basit olması için sadece id
, ad
, yas
sütunlarını kullanmak istiyorum. İlk başta örnek olarak 2-3 tane veride ekleyebilirsiniz:
kullanicilar isimli tablo
Tablomuz ve örnek verilerimiz hazırsa sorgu kodumuzu hemen gönderelim:
imlec.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 = 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:

Döngü sonucu
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.
Tablomuza yeni bir kullanıcı eklemek istediğimizde kullanmamız gereken kod
INSERT
komut yapısı aşağıdaki gibidir:sonuc = imlec.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 sütunları 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:imlec.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.
Ş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şlayabilirsinizsonuc = imlec.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.

Tablomuzdaki kayıt başarıyla silinmiş.
Tablomuz üzerindeki bir veriyi silmek için
DELETE
sql komutunu kullanmalıyız. Örnek olarak aynı tablo üzerinde yer alan Yunus kullanıcısını silelim.sonuc = imlec.execute('DELETE FROM ogrenciler WHERE ad= %s',('Yunus'))
db.commit()
Veritabanı üzerindeki işlerinizi tamamladığınızda veritabanı bağlantısını sonlandırmak için
close()
fonksiyonunu kullanmalısınız.db.close()
Tüm işlemleri kısaca özetlersek sırasıyla şu işlemleri yapmalısınız.
- 1.
pymysql.cursors
modülünü projenize dahil edin - 2.Veritabanınızı
connect()
fonksiyonu ile bağlayın - 3.
cursor()
fonksiyonu ile imleç oluşturun - 4.Sql komutlarınızı
execute()
fonksiyonu ile işletin. - 5.Veritabanınızda değişiklik olacaksa
commit()
edin. - 6.Veritabanı bağlantınızı
close()
ile sonlandırın.
Last modified 3yr ago