Ne zamandır Python ile ilgili pek güzel şey anlatmadım. Bu yazımda ise Python da bulunan sözlük yapısının aynısı olan, artı olarak sözlüklerle ilgili yaptığınız çalışmaları bir veritabanında saklayacak bir modülü bildiğim kadarıyla anlatmaya çalışacağım. Bu modülün adı shelve. shelve modülü sayesinde sqllite gibi tek dosyadan oluşan ve veriyi binary olarak saklayan veritabanı oluşturabiliyoruz. Yalnız bu veri tabanı sadece “anahtar” ve “değeri” olarak kayıt yapabiliyor. O yüzden yukarıda da sözlük yapısı hakkında olduğunu yazmıştık. Peki bu shelve modülüyle ne gibi uygulamalar geliştirebiliriz? Örneğin; bir telefon defteri uygulaması gerçekleştirebiliriz ya da önemli şifrelerimizi saklayabiliriz. 2. seçeneği tercih etmem, ama benimde bu konuda bir uygulamam olan telefon defterini tercih ederim. Dersimizde arayüzü olmayan bir telefon defteri uygulaması yapacağız. shelve modülünün bütün işlevlerini kullanarak elimden geldiği kadar bir uygulama kodlayacağız
Modülümüzü import edelim ve başlayalım…
import shelve
veri_tabani = shelve.open("defter.db")
veri = veri_tabani["Metehan"] = "1234567"
print veri_tabani
Bu kod en basit şekliyle veri kaydetmeyi anlatıyor. veri_tabanı değişkeniyle şifreli bir dosya oluşturduk ve veri değişkeni ile dosyaya veriyi yazdırdık. print ile de kayıt ettiği veriyi görüntüledik. Bu kodları çalıştırdığımızda şöyle bir çıktı alırız:
{‘Metehan’: ‘1234567′}
Peki biz istiyoruz ki başkaları istediği veriyi kaydetsin. Şöyle bir şey yapabiliriz.
import shelve
isim = "Mete"no = "12345"
veri_tabani = shelve.open("defter.db")
veri = veri_tabani[isim] = no
print veri_tabani
{‘Mete’: ‘12345′, ‘Metehan’: ‘1234567′}
Burada değişkenlere verilen adı kullanıcılar değiştirebilir, ama biz istiyoruz ki kişiler soruya göre yanıt versin ve emin olunduktan sonra kayıt gerçekleşsin. Bunu da şöyle yapabiliriz(Bu arada dosyamız önceki kodlarla oluşturulduğu için eski kayıtta mevcut).
import shelve
ad_sor = raw_input("Eklemek istediğiniz isim: ")
no_sor = raw_input("İsime eklemek istediğiniz numara: ")
print ad_sor, "=", no_sor
sorgu = raw_input("Eklemek istediğinize eminseniz ‘y’ yazın: ")
if sorgu == "y":
veri_tabani = shelve.open("defter.db")
veri = veri_tabani[ad_sor] = no_sor
else:
print "İşlem iptal edildi…"
print veri_tabani
Bu kodu çalıştırınca şöyle bir çıktı alırız:
Eklemek istediğiniz isim: memet
İsime eklemek istediğiniz numara: 98765
memet = 98765
Eklemek istediğinize eminseniz ‘y’ yazın: y
{‘memet’: ‘98765′, ‘Mete’: ‘12345′, ‘Metehan’: ‘1234567′}
raw_input() yardımıyla kullanıcıya daha kolay bir veri girişi sağlıyoruz. Yalnız çoğu uygulma arayüz olmadan pek kullanılmaz. Konumuz gui(arayüz) ile ilgili olmadığı için ben sadece en basit yoldan shelve modülünü anlatmaya devam edeceğim.
Dosyada ki Anahtarları Okutmak
En son kodlarımızdan yola çıkarak dosyada bulunana anahtarları(memet, Mete) listeliyeceğiz.
incele = veri_tabani.keys()
print incele
[‘Metehan’, ‘Mete’, ‘memet’]
Bu şekilde isimlerin listesini buluyoruz. Bunu for döngüsü kullanarak daha güzel görünüm elde edebilirsiniz.
Dosyadan Anahtar ve Değeri Silmek
Eğer dosyadan birini silmek istersek eğer şöyle bir kod yazmalıyız.
del veri_tabani["Mete"]
Tabiki biz “Mete” yazan yere atadığımız bir değişkeni yazarak kişiye silmesini istediği kişiyi yine raw_input() gibi bir fonksiyon yardımıyla sağlayabiliriz. Bunun dışında anahtar sabit kalacak şekilde değerini değiştirebilmek mümkün. Hiç bi şekilde bir anahtarı(Mete) değiştiremiyoruz(meltem). O yüzden kişiyi silmek gerekiyor. Bu küçük kod yardımıyla istediğimizi siliyoruz.
Son fonksiyonumuz ise has_key() bu method sayesinde bir anahtarın var olup olmadığına bakabiliriz. Artık shelve yi sindirdiğinizi varsayarak kullanımını size bırakıyorum