MySQL, bugün piyasadaki en popüler veritabanı yönetim sistemlerinden (DBMS’ler) biridir. Bu yılki DB-Motor Sıralamasında yalnızca Oracle DBMS’den sonra ikinci sırada yer aldı. Çoğu yazılım uygulamasının verilerle bir şekilde etkileşime girmesi gerektiğinden, Python gibi programlama dilleri bu veri kaynaklarını depolamak ve bunlara erişmek için araçlar sağlar.
Bu makalede bir MySQL veritabanını bir Python uygulamasıyla verimli bir şekilde entegre edebileceksiniz. Uygulamada kütüphane adında bir veritabanında kayıtlı olan öğrenci tablosu üzerinde SEÇ, EKLE, GÜNCELLE ve SİL işlemlerini yapan kodları göreceksiniz.
MySQL Kurulum
Resmi belgeler, MySQL sunucusunu indirmenin ve kurmanın önerilen yolunu açıklar. Windows, macOS, Solaris, Linux ve çok daha fazlası dahil olmak üzere tüm popüler işletim sistemleri için talimatlar bulacaksınız.
Windows için en iyi yol MySQL Installer‘ı indirmek ve tüm süreci kendisinin halletmesine izin vermektir. Kurulum yöneticisi ayrıca MySQL sunucusunun güvenlik ayarlarını yapılandırmanıza yardımcı olur.
MySQL Connector Kurulum
Birçok popüler programlama dilinin kendi veritabanı API’si vardır. Örneğin, Java, Java Veritabanı Bağlantısı (JDBC) API’sine sahiptir. Bir Java uygulamasını bir MySQL veritabanına bağlamanız gerekiyorsa, JDBC API’sini takip eden MySQL JDBC bağlayıcısını kullanmanız gerekir.
Benzer şekilde, Python’da bir MySQL veritabanıyla etkileşim kurmak için bir Python MySQL bağlayıcısı yüklemeniz gerekir. Birçok paket DB-API standartlarını takip eder, ancak aralarında en popüler olanı MySQL Connector/Python’dur. pip ile alabilirsiniz:
1 2 3 | $ pip install mysql-connector-python |
pip, bağlayıcıyı o anda etkin olan sanal ortamda üçüncü taraf bir modül olarak kurar. Tüm bağımlılıklarla birlikte proje için yalıtılmış bir sanal ortam kurmanız önerilir.
Kurulumun başarılı olup olmadığını test etmek için Python terminalinize aşağıdaki komutu yazın:
1 2 3 | >>> import mysql.connector |
Yukarıdaki kod hatasız çalışıyorsa, mysql.connector kurulur ve kullanıma hazırdır. Herhangi bir hatayla karşılaşırsanız, doğru sanal ortamda olduğunuzdan ve doğru Python yorumlayıcısını kullandığınızdan emin olun.
Tamamen Python uygulaması olan doğru mysql-connector-python paketini kurduğunuzdan emin olun. mysql-connector gibi benzer şekilde adlandırılmış ancak artık amortismana tabi tutulmuş bağlayıcılara dikkat edin.
Bağlantı Kurma
MySQL sunucusuyla etkileşim kurmanın ilk adımı bir bağlantı kurmaktır. Bunu yapmak için mysql.connector modülünden connect()’e ihtiyacınız var. Bu işlev, ana bilgisayar, kullanıcı ve parola gibi parametreleri alır ve bir MySQLConnection nesnesi döndürür. Bu kimlik bilgilerini kullanıcıdan girdi olarak alabilir ve connect() öğesine iletebilirsiniz:
1 2 3 4 5 6 7 8 9 10 | import mysql.connector mysqldb = mysql.connector.connect( host="localhost", user="root", password="", database="kutuphane" ) |
Ardından uygulamada kullanılacak değişkenler ve mysql cursor oluşturulur.
1 2 3 4 | cursor = mysqldb.cursor() devam = 'E' |
Programın ana bölümü
Veritabanı işlemleri için kullanıcıyı yönlendireceğimiz kodları yazıyoruz. Aşağıdaki fonksiyonlar ilerleyen satırlarda doldurulmak üzere pass parametresini almaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #fonksiyonlar def ara(): pass def ekle(): pass def listele(): pass def sil(): pass def guncelle(): pass #ana program while devam in ('E','e'): print("*************************") print("MySQL Veritabanı İşlemleri") print("(1) Tüm Kayıtları Listele") print("(2) Öğrenci Ekle") print("(3) Öğrenci Ara") print("(4) Öğrenci Güncelle") print("(5) Öğrenci Sil") secim = input("Seçim Yapınız :") if secim == "1": listele() elif secim =="2": ekle() elif secim =="3": ara() elif secim =="4": guncelle() elif secim =="5": sil() devam = input("Devam etmek için (E/e) tuşuna basın :") print("Programdan Çıktınız") |
Yukarıdaki programda döngü E/e harflerine basıldığı sürece kullanıcıdan bilgiler isteyecektir.
Fonksiyonlar
Tüm kayıtları listele: ilk olarak tüm kayıtları listeleyen fonksiyonu yazalım.
1 2 3 4 5 6 7 8 | def listele(): cursor.execute("select * from ogrenci") data = cursor.fetchall() print("{:<4} {:<15} {:<15}".format("Nu","Ad","Soyad")) for satir in data: print("{:<4} {:<15} {:<15}".format(satir[0],satir[1],satir[2])) |
Öğrenci Ekle: Öğrenci ekleme işlemini yapan fonksiyon kodları.
1 2 3 4 5 6 7 8 9 10 11 12 13 | def ekle(): ad =input("İsim girin :") soyad =input("Soyisim girin :") cinsiyet =input("Cinsiyet (K/E) girin :") dtarih =input("Doğum tarihi girin(YYYY/AA/GG) :") sinif =input("Sınıf girin :") sql = "INSERT INTO ogrenci values(NULL,'{}','{}','{}','{}','{}',{})".format(ad,soyad,cinsiyet,dtarih,sinif,0) cursor.execute(sql) mysqldb.commit() print("[+] Veri Eklendi") |
Öğrenci Ara: OGRNO değerine göre öğrenci araması yapan fonksiyon kodları.
1 2 3 4 5 6 7 8 9 10 11 12 13 | def ara(): ogrno = input( "Öğrenci numarası girin :") cursor.execute("select * from ogrenci where ogrno ="+ogrno) data = cursor.fetchone() if data != None : print("Numara",data[0]) print("Ad",data[1]) print("Soyad",data[2]) print("Doğum Tarih",data[4]) print("Cinsiyet",data[3]) print("Sınıf",data[5]) |
Öğrenci Güncelle: Öğrencileri ad, soyad ve sınıf bilgisine göre güncelleyen programın kodları.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | def guncelle(): ogrno = input( "Öğrenci numarası girin :") cursor.execute("select * from ogrenci where ogrno ="+ogrno) data = cursor.fetchone() if data != None : print("Numara",data[0]) print("Ad",data[1]) print("Soyad",data[2]) print("Doğum Tarih",data[4]) print("Cinsiyet",data[3]) print("Sınıf",data[5]) print("Sadece güncellenecek alanlara giriş yapın") ad=input("İsim girin yada boş bırakın(ENTER)") sad=input("Soyisim girin yada boş bırakın(ENTER)") sinif=input("Sınıf girin yada boş bırakın(ENTER)") if not ad: ad=data[1] if not sad: sad=data[2] if not sinif: sinif=data[5] sql = "UPDATE ogrenci SET ograd ='{}', ogrsoyad ='{}', sinif='{}' WHERE ogrno = {}".format(ad,sad,sinif,data[0]) cursor.execute(sql) mysqldb.commit() print("[+] Veri Güncellendi") |
Öğrenci Sil: Öğrenci numarasına göre öğrencisi silen program kodları.
1 2 3 4 5 6 7 | def sil(): ogrno = input( "Öğrenci numarası girin :") cursor.execute("DELETE FROM ogrenci WHERE ogrno="+ogrno) mysqldb.commit() print("[+] Veri Silindi") |
Tüm kodların bir arada yazımı:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | import mysql.connector mysqldb = mysql.connector.connect( host="localhost", user="root", password="", database="kutuphane" ) cursor = mysqldb.cursor() devam = 'E' #fonksiyonlar def ara(): ogrno = input( "Öğrenci numarası girin :") cursor.execute("select * from ogrenci where ogrno ="+ogrno) data = cursor.fetchone() if data != None : print("Numara",data[0]) print("Ad",data[1]) print("Soyad",data[2]) print("Doğum Tarih",data[4]) print("Cinsiyet",data[3]) print("Sınıf",data[5]) def ekle(): ad =input("İsim girin :") soyad =input("Soyisim girin :") cinsiyet =input("Cinsiyet (K/E) girin :") dtarih =input("Doğum tarihi girin(YYYY/AA/GG) :") sinif =input("Sınıf girin :") sql = "INSERT INTO ogrenci values(NULL,'{}','{}','{}','{}','{}',{})".format(ad,soyad,cinsiyet,dtarih,sinif,0) cursor.execute(sql) mysqldb.commit() print("[+] Veri Eklendi") def listele(): cursor.execute("select * from ogrenci") data = cursor.fetchall() print("{:<4} {:<15} {:<15}".format("Nu","Ad","Soyad")) for satir in data: print("{:<4} {:<15} {:<15}".format(satir[0],satir[1],satir[2])) def sil(): ogrno = input( "Öğrenci numarası girin :") cursor.execute("DELETE FROM ogrenci WHERE ogrno="+ogrno) mysqldb.commit() print("[+] Veri Silindi") def guncelle(): ogrno = input( "Öğrenci numarası girin :") cursor.execute("select * from ogrenci where ogrno ="+ogrno) data = cursor.fetchone() if data != None : print("Numara",data[0]) print("Ad",data[1]) print("Soyad",data[2]) print("Doğum Tarih",data[4]) print("Cinsiyet",data[3]) print("Sınıf",data[5]) print("Sadece güncellenecek alanlara giriş yapın") ad=input("İsim girin yada boş bırakın(ENTER)") sad=input("Soyisim girin yada boş bırakın(ENTER)") sinif=input("Sınıf girin yada boş bırakın(ENTER)") if not ad: ad=data[1] if not sad: sad=data[2] if not sinif: sinif=data[5] sql = "UPDATE ogrenci SET ograd ='{}', ogrsoyad ='{}', sinif='{}' WHERE ogrno = {}".format(ad,sad,sinif,data[0]) cursor.execute(sql) mysqldb.commit() print("[+] Veri Güncellendi") #ana program while devam in ('E','e'): print("*************************") print("MySQL Veritabanı İşlemleri") print("(1) Tüm Kayıtları Listele") print("(2) Öğrenci Ekle") print("(3) Öğrenci Ara") print("(4) Öğrenci Güncelle") print("(5) Öğrenci Sil") secim = input("Seçim Yapınız :") if secim == "1": listele() elif secim =="2": ekle() elif secim =="3": ara() elif secim =="4": guncelle() elif secim =="5": sil() devam = input("Devam etmek için (E/e) tuşuna basın :") print("Programdan Çıktınız") |
Bu yazıda Python ile INSERT, UPDATE, DELETE ve SELECT işlemlerini nasıl gerçekleştireceğinizi gördünüz.
Uygulama için örnerilerinizi aşağıya yorum olarak bırakabilirsiniz.
Yorum yap