SQLite3 Kullanımı

Bu etkinliğimizde öğrenci işleri ile ilgili klasik işlemleri gerçekleştireceğiz. Uni_Tur.py İndir ! dosyasını indirip Pycharm a aktarabilirsiniz. Bunun yanında OgrenciBilgileri.db İndir ! veritabanınıda indirip beraber inceleyebilirsiniz.

import sqlite3

class Universite:
def __init__(self,uniAd="",uniUlke="",uniSehir=""): # İlk değerler atandığı için
self.uniAd = uniAd
self.uniUlke = uniUlke
self.uniSehir = uniSehir
self.durum = True
self.veriTabaniBaglanti()

def calistirProg(self):
self.menu()
menuSecim = self.menuSecim()
if menuSecim == 1:
self.ogrEkle()
if menuSecim == 2:
self.ogrSil()
self.fakulteBolumListele()
if menuSecim == 3:
self.ogrGuncelle()
if menuSecim == 4:
while True:
try:
gosterSecim = int(input("1) Tümü\n2) Fakülte\n3) Bölüm\n4) Öğrenim Türü\n5) Durum\n Seçim yapınız :"))
if gosterSecim < 1 or gosterSecim > 5:
continue
break
except ValueError:
print("Lütfen sayısal bir değer giriniz !")
self.ogrListele(gosterSecim) #Öğrencileri fakülteye, bölüme vs. göre süzmek istenebilir.
if menuSecim == 5:
self.durum = False

def menuSecim(self):
while True:
try:
menuSecim = int(input("Seçim Yapınız : "))
if menuSecim < 1 or menuSecim > 5:
print("Seçiminiz menümüzde bulunmamaktadır ! Kontrol edip yeniden deneyiniz !")
continue
break
except ValueError:
print("Lütfen sayısal değer giriniz !")
return menuSecim

def menu(self):
print("""
******** {} ÖĞRENCİ İŞLERİ ************
{} / {}
******************************************************************
""".format(self.uniAd.upper(),self.uniUlke,self.uniSehir))
print("1) Öğrenci Ekleme (Add) \n2) Öğrenci Silme (Delete)\n3) Öğrenci Bilgileri Güncelleme (Update)\n4) Öğrenci Listele (Show)\n5) ÇIKIŞ (Exit)\n")

def ogrEkle(self):
print("******* Öğrenci Ekleme İşlemi *******")
ad = input("Öğrencinin adını giriniz : ").lower().capitalize()
soyad = input("Öğrencinin soyadını giriniz : ").lower().capitalize()

fakulteBolumYapi = self.fakulteBolumListele()
for i,fakBol in enumerate(fakulteBolumYapi["Fakulte"],1):
print("{}) {}".format(i,fakBol))
fakulte = fakulteBolumYapi["Fakulte"][int(input("Öğrencinin fakültesini giriniz : "))-1] # Listelenen Fakültelerin sıra numarası girilir. O sıra numarasına ait fakülte ismi kayıt edilir.

for i, fakBol in enumerate(fakulteBolumYapi["Bolum"], 1):
print("{}) {}".format(i, fakBol))
bolum = fakulteBolumYapi["Bolum"][int(input("Öğrencinin bölümünü giriniz : "))-1] # Listelenen Bölümlerin sıra numarası girilir. O sıra numarasına ait bölüm ismi kayıt edilir.

# Öğrencilerin Öğrenci numaraları tek olmalı.
while True:
ogrNo = input("Öğrencinin kayıt Numarasını giriniz : ")
if self.kayitNoKontrol(ogrNo) == False:
break
else:
print("Kayıt numarası daha önce başka bir öğrenciye verilmiş !")

while True:
try:
tur = int(input("Öğrencinin öğrenim durmunu ( 1) Normal Öğretim 2) İkinci Öğretim ) giriniz : "))
if tur not in (1,2):
continue
break
except ValueError:
print("Lütfen sayısal değer giriniz (1 ya da 2) : ")
durum = "Kayıtlı"

self.imlec.execute("INSERT INTO ogrenciler VALUES('{}','{}','{}','{}','{}',{},'{}')".format(ad,soyad,fakulte,bolum,ogrNo,tur,durum))
self.baglanti.commit()
print("Kayıt işlemi başarılıdır !")

def kayitNoKontrol(self,ogrNo):
self.imlec.execute("SELECT * FROM ogrenciler")
ogrenciler = self.imlec.fetchall()

for ogrenci in ogrenciler:
if ogrenci[4] == ogrNo:
return True
return False

def ogrSil(self):
listeElemanSayisi = self.ogrListele(1) # Kayıt sayısı. Tüm öğrencilerin sayısı da denilebilir.
while True:
try:
secim = int(input("Silmek istediğiniz kaydın numarasını yazınız : "))
if secim < 1 or secim > listeElemanSayisi:
print("Yeniden deneyiniz !")
continue
break
except ValueError:
print("Lütfen sayısal bir değer giriniz !")

self.imlec.execute("DELETE FROM ogrenciler WHERE rowid = {}".format(secim))
self.baglanti.commit()
print("Öğrenci başarılı bir şekilde silindi !")

def ogrGuncelle(self):
listeElemanSayisi = self.ogrListele(1)
while True:
try:
guncelSecim = int(input("Güncellemek istediğiniz kaydın numarasını giriniz : "))
if guncelSecim < 1 or guncelSecim > listeElemanSayisi:
print("Girdiğiniz kayıt numarası bulunmamaktadır. Lütfen kontrol edip yeniden deneyiniz !")
continue
break
except ValueError:
print("Girdiğiniz kayıt numarası sayısal bir değer olmalı !")

while True:
try:
alanGuncel = int(input("1) Ad\n2) Soyad\n3) Fakülte\n4) Bölüm\n5) Öğrenci No\n6) Öğrenim Durumu\n7) Durum\n Seçim yapınız :"))
if alanGuncel < 1 or alanGuncel > 7:
print("Lütfen 1 ile 7 arasında bşr sayı giriniz :")
continue
break
except ValueError:
print("Sayısal bir değer giriniz !")

alanlar = ["ad","soyad","fakulte","bolum","ogrNo","tur","durum"]

if alanGuncel == 6:
while True:
try:
yeniDeger = int(input("1 ya da 2 değerini girebilirsiniz. 1) Normal Öğrenim 2) İkincil öğrenim"))
if yeniDeger not in (1,2):
continue
break
except ValueError:
print("Lütfen sayısal bir değer giriniz !")
self.imlec.execute("UPDATE ogrenciler SET tur = {} WHERE rowid = {}".format(yeniDeger,guncelSecim))
else:
yeniDeger = input("Yeni değeri giriniz : ")
self.imlec.execute("UPDATE ogrenciler SET {} = '{}' WHERE rowid = {}".format(alanlar[alanGuncel-1],yeniDeger, guncelSecim))

self.baglanti.commit()

print("Güncelleme işlemi başarılı bir şekilde sonuçlandırılmıştır")

def ogrListele(self,neyeGore):
if neyeGore == 1:
self.imlec.execute("SELECT * FROM ogrenciler")
tumOgrenciler = self.imlec.fetchall()
listeElemanSayisi = len(tumOgrenciler)

convertOgrenci = lambda x: [str(y) for y in x]
for i, ogrenci in enumerate(tumOgrenciler,1):
print("{}) {}".format(i," ".join(convertOgrenci(ogrenci))))

return listeElemanSayisi
if neyeGore == 2:
self.imlec.execute("SELECT fakulte FROM ogrenciler")
tumFakulteler = list(enumerate(list(set(self.imlec.fetchall())),1))

for fakulte in tumFakulteler:
print("{}) {}".format(fakulte[0],fakulte[1][0]))
while True:
try:
alanSecim = int(input("Hangi Fakültede ki öğrencileri listelemek istersiniz : "))
break
except ValueError:
print("Lütfen sayısal bir değer giriniz !")

self.imlec.execute("SELECT * FROM ogrenciler WHERE fakulte ='{}'".format(tumFakulteler[alanSecim-1][1][0]))

tumOgrenciler = self.imlec.fetchall()
listeElemanSayisi = len(tumOgrenciler)

convertOgrenci = lambda x: [str(y) for y in x]
for i, ogrenci in enumerate(tumOgrenciler, 1):
print("{}) {}".format(i, " ".join(convertOgrenci(ogrenci))))

print("Üniversitemizde {} Fakültesinde toplam öğrenci sayımız : {} 'dır. ".format(tumFakulteler[alanSecim - 1][1][0], listeElemanSayisi))

if neyeGore == 3:
self.imlec.execute("SELECT bolum FROM ogrenciler")
tumBolumler = list(enumerate(list(set(self.imlec.fetchall())),1))

for bolum in tumBolumler:
print("{}) {}".format(bolum[0],bolum[1][0]))
while True:
try:
alanSecim = int(input("Hangi Bölümde ki öğrencileri listelemek istersiniz : "))
break
except ValueError:
print("Lütfen sayısal bir değer giriniz !")

self.imlec.execute("SELECT * FROM ogrenciler WHERE bolum ='{}'".format(tumBolumler[alanSecim-1][1][0]))
tumOgrenciler = self.imlec.fetchall()
listeElemanSayisi = len(tumOgrenciler)

convertOgrenci = lambda x: [str(y) for y in x]
for i, ogrenci in enumerate(tumOgrenciler, 1):
print("{}) {}".format(i, " ".join(convertOgrenci(ogrenci))))

print("\nÜniversitemizde {} Bölümünde toplam öğrenci sayımız : {} 'dır. ".format(tumBolumler[alanSecim - 1][1][0], listeElemanSayisi))

if neyeGore == 4:
self.imlec.execute("SELECT tur FROM ogrenciler")
tumTur = list(enumerate(list(set(self.imlec.fetchall())),1))

for tur in tumTur:
print("{}) {}".format(tur[0],tur[1][0]))
while True:
try:
alanSecim = int(input("Hangi Öğrenimde ki öğrencileri listelemek istersiniz : "))
break
except ValueError:
print("Lütfen sayısal bir değer giriniz !")

self.imlec.execute("SELECT * FROM ogrenciler WHERE tur ={}".format(tumTur[alanSecim-1][1][0]))
tumOgrenciler = self.imlec.fetchall()
listeElemanSayisi = len(tumOgrenciler)

convertOgrenci = lambda x: [str(y) for y in x]

for i, ogrenci in enumerate(tumOgrenciler, 1):
print("{}) {}".format(i, " ".join(convertOgrenci(ogrenci))))

print("\nÜniversitemizde {} Bölümünde toplam öğrenci sayımız : {} 'dır. ".format(tumTur[alanSecim - 1][1][0], listeElemanSayisi))

if neyeGore == 5:
self.imlec.execute("SELECT durum FROM ogrenciler")
tumTur = list(enumerate(list(set(self.imlec.fetchall())),1))

for tur in tumTur:
print("{}) {}".format(tur[0],tur[1][0]))
while True:
try:
alanSecim = int(input("Hangi Öğrenimde ki öğrencileri listelemek istersiniz : "))
break
except ValueError:
print("Lütfen sayısal bir değer giriniz !")

self.imlec.execute("SELECT * FROM ogrenciler WHERE durum ='{}'".format(tumTur[alanSecim-1][1][0]))
tumOgrenciler = self.imlec.fetchall()
listeElemanSayisi = len(tumOgrenciler)

convertOgrenci = lambda x: [str(y) for y in x]

for i, ogrenci in enumerate(tumOgrenciler, 1):
print("{}) {}".format(i, " ".join(convertOgrenci(ogrenci))))

print("\nÜniversitemizde {} durumunda toplam öğrenci sayımız : {} 'dır. ".format(tumTur[alanSecim - 1][1][0], listeElemanSayisi))

def veriTabaniBaglanti(self):
self.baglanti = sqlite3.connect("OgrenciBilgileri.db")
self.imlec = self.baglanti.cursor()
self.imlec.execute("CREATE TABLE IF NOT EXISTS ogrenciler(ad TEXT,soyad TEXT,fakulte TEXT,bolum TEXT,ogrNo TEXT,tur INT,durum TEXT)")
self.imlec.execute("CREATE TABLE IF NOT EXISTS fakulteBolum(fakulte TEXT, bolum TEXT)")
self.baglanti.commit()

def fakulteBolumListele(self):
self.imlec.execute("SELECT * FROM fakulteBolum")
fakulteBolumListe = self.imlec.fetchall()

fakListe = []
bolListe = []

for fakBol in fakulteBolumListe:
fakListe.append(fakBol[0])
bolListe.append(fakBol[1])

fakListe = list(set(fakListe))
bolListe = list(set(bolListe))

fakulteBolumYapi ={
"Fakulte": fakListe,
"Bolum": bolListe
}
return fakulteBolumYapi

# Nesne oluştunca Uni adını,ülkesini,şehrini gönderebiliriz.
KTU = Universite("Karadeniz Teknik Üniversitesi","Türkiye","Trabzon")
while KTU.durum:
KTU.calistirProg()