Elixir Ve Sqlalchemy

ORM kavramı benim Django ile birlikte tanıştığım ve gerçekten çok hoşuma giden bir şey.ORM ile veritabanında işleyeceğimiz sorguları sınıflar olarak tanımlıyoruz ve code generator tekniği ile bunları sql sorgusuna dokuyoruz.Tabi biz bu sırada bu sorgular ile pek ilgilenmiyoruz.Bizim ilgilendiğimiz nokta sınıfları en uygun şekilde tanımlamak.Bunun getirdiği bence çok guzel sonuçlar var.Django ORM kavramını kullanan en guzel orneklerden birisi.Turkiyede'de ORMAN adında geliştirilim guzel bir framework var.Ancak benim bugun anlatacağım ORM Elixir ve SqlAlchemy ile ilgili.Bu ikisi python ile nasıl kullanabiliriz basitçe giriş yapacağım.

Ben python uygulamalarımda virtualenv kullanıyorum.Çunku gerçekten dağınıklığını bir nebzede olsa onlemenizi sağlıyor.Eğer sizde bu guzel nimetten faydalanmak istiyorsanız bilgisayarınıza oncelikli olarak virtualenv yazılımını kurun.Bunun için komut satırına aşağıdaki komutu girmeniz yeterlidir.(Hangi linux dağıtımını kullanıyorsanız kullanın kesinlikle Python ile uğraşıyorsanız bilgisayarınıza pip'in kurulumunu yapınız.)

pip install virtualenv

Kurulum bittikten sonra virtualenv dizin ismi şeklinde dizinimizi oluşturuyoruz.Ve daha sonra bu dizine girerek source'u aktif ediyoruz.Ve artık normal bilgisayarınızdan bağımsız bir sanal platforma sahip oldunuz.Şimdi de gerekli yazılımımız olan elixir'i kuralım.Pip virtualenv içinde kurulu olduğu için tekrardan kurmanız gerek yok.

Virtualenv Pip Elixir Sql Alchemy

Şimdi ise işin kodlama kısmına geçiyoruz.Öncelikle veritabanımızda olacak olan tablo ve kolonları sınıf içinde tanımlamak ile başlıyoruz.

Elixir Sql Alchemy Model Tanımlama

Satirlari bir bir anlatmak gerekirse once gerekli modulumuzu dosyamıza ekliyoruz.Ardından bu module ait metadata.bind komutu ile kullanacağımız veritabanını seçiyoruz.Aynı komutun bir diğer ozelliği olacak echo ile de birazdan yapılacak olan sorguların ekrana basılıp basılmamasını kararlaştırıyoruz.

Asıl onemli olan kısım ise Siteler diye tanımladığımız Entity'den miras alan sınıf.Buranın altına veritabanımızda olmasını istediğimiz kolonları ekliyoruz.Malum tablomuz artık Siteler oldu.Kolon olarak ben baslik,site ve aciklama eklemeleri yapmışım.Burada farkettiğiniz gibi baslik kolonuna 30 hanelik bir sınır getirmişim.Bu kolona 30 haneden fazla veri girişi yapamayız.Ardından site kolonuna da baslik ile aynı ancak sınırlama olmaksızın kolon ataması yapmışız.En altta da aciklama kolonunu text olarak kullanacağımızı belirtmişiz.

Daha sonrada bir nevi gereklilik olan repr fonksiyonumuzu uygun bir şekilde tanımlıyoruz.

Butun bunların ardından veritabanına oluşacak olanlar buyuk oranda tamamlandı.Şimdi sıra bunları işlemeye ve tabloları oluşturmaya geldi.Yukarıdaki koda buradan ulaşabilirsiniz.

Şimdi de yukarıdaki modelimizi uygun bir şekilde işleyelim.Bunun için ben veri adında yeni bir dosya açtım.(Aşağıdaki resme tıklarsanız tam boyutlu olarak daha net gorebilirsiniz)

Elixir Sql Alchemy Veri Isleme

veri.py kodumuza bakarsanız oncelikli olarak az once oluşturduğumuz model dosyamızı ekliyoruz.Daha sonra gerekli olan kurulum ve oluşturmaları yapıyoruz.Butun bunlardan sonra dbmiz veri eklemek için hazır.Şimdi gorduğunuz gibi model.py dosyamızda oluşturduğumuz sınıf Siteler artık bir tablo oldu.Ve ona resimdeki gibi veri girişi yapabiliyoruz.

Kayit eklemelerin ardından all() fonksiyonu kullanarak tum kayıtları bir listeye atayabiliyoruz.Ve bu listeyi Python kullananların aşina olduğu teknik ile ekrana basıyoruz.Eğer kodumuz bu kadar olsaydı çalıştırdığınızda ekranınızda aşağıdaki gibi bir goruntu elde edeceksiniz.

--------------------
Halit Alptekin
http://www.halitalptekin.com
Halit Alptekin Personal Blog
--------------------
--------------------
Google
http://www.google.com
Arama Motoru
--------------------

Daha sonra kodumuzda gorduğunuz bir diğer kısımda kayıtlar arasında arama yapma.Burada başlığı "Halit Alptekin" e eşit olan kayitları tek değişkende topluyoruz.Ve bu kayıtlardan ilkini kayit değişkenine atıyoruz.Daha sonra bu değişkeni gene her zamanki gibi uygun bir şekilde ekrana basıyoruz.

Biraz aşağıda ise bu bulduğumuz kayiti nasil sileceğimiz yer alıyor.Gayet basit bir şekilde delete() fonksiyonunu çağırarak kaydimizi siliyoruz ve bunu son satırdaki komut ile işliyoruz.Yukarıda yer alan koda buradan ulaşabilirsiniz.

Python ile SqlAlchemy Elixir kullanmak işte yukarıda gorduğunuz kadar basit.Ben bu olayı kavradıktan sonra veritabanı gerektiren tum işlerimde kullanmaya başladım.Ve gerçekten de çok fazla faydasını goruyorum.(Sadece Sqlite değil mysql,postgresql vb diğer veritabanlarını da destekliyor)

Eğer sizde bu konulara ilgi duyduysanız Elixir ve SqlAlchemy sitelerine giderek araştırmaya başlayabilirsiniz.Benim anlattıklarım başlangıç aşamasının da çok kuçuk bir kısmı.Ancak olayın temeli denilebilir.

comments powered by Disqus