ORM Nedir ve SQLAlchemy Kullanımı

ORM; Object Relational Mapper tanımının baş harfleriyle oluşan bu kısaltma, ilişkisel bir veritabanı(MySql, Sqlite …) ile programımız arasında alışverişi yaparak bize zaman kazandıran bir kütüphanelere verilen isimdir.

Normal bir süreçte veritabanı oluşturulur, Python ile bu veritabanına bağlanılır ve bir sorgu(query) hazırlanarak bu bağlantı üzerinden gönderilir dönen cevap işlenir ve kullanılır.

Bir ORM kütüphanesi kullandığımızda ise veritabanında oluşturacağımız tabloların düzenine uygun olarak sınıflar oluştururuz. Ve sınıflardan nesneler oluşturarak, sorgu göndermek yerine bu nesneleri kullanırız. Kısacası sorgu yazmak yerine Python kodu yazarak hayatımızı kolaylaştırıyoruz. Hem daha hızlı geliştirilebilen hem de daha güvenli bir programımız oluyor.

Eksi yanları ise; Impedance Mismatch denilen nesne ve ilişkisel veritabanı arasındaki olası farklılıklar, performans sorunları ve karmaşık veritabanlarında kullanım zorluğu olabilir.

En çok bilinen ORM kütüphaneleri Django’ya ait olan Django’s ORM ve SQLAlchemy. Mantıkları benzer olduğu için hangisinin kullanılması gerektiği detayına girmeden SQLAlchemy ile bir kaç örnek yapalım.

Öncelikle kurulum için en kolay yol olan “pip install sqlalchemy” komutunu komut satırına yazıyoruz. Kurulum tamamlandıktan sonra kullanıma başlayabiliriz.

Bir okul için yönetim sistemi yaptığımızı düşünerek öğretmen ve ders tablolarımız ve ilişkilerini tasarlamamız gerektiğini varsayalım. Öncelikle bu tabloları oluşturmak için bazı komutlar yazmamız gerekiyordu fakat ORM tabanında SQL kodu yapmayacağız dedik. Bunun yerine tanımladığımız sınıfları bildirmemiz gerekli. Aşağıda şekilde dosyamızı decleration.py ismiyle kaydedelim.

Programımızda Ogretmen ve Ders adında Base sınıfı üzerine iki sınıf oluşturuyoruz. Bu sınıflar tablolarımız oluyor aslında. Aralarındaki ilişkiyi ise Ders sınıfında kullandığımız ForeignKey ve relationship fonksiyonları ile sağlıyoruz. Dosyamızı kaydedik çalıştırdıktan sonra bir okul_sistemi.db dosyası oluşması gerekli klasörümüzde. Bu bizim SQLite veritabanımız.

Veritabanı hazır şimdi bazı kayıtlar oluşturalım. Aşağıdaki kodları insert.py olarak kaydedip çalıştırarak 2 öğretmen ve 4 ders oluşturabiliriz.

Kodlar gayet açık aslında tek yaptığımız önceki sınıflarımızı import edip bunlardan nesneler oluşturmak ve başlattığımız oturuma(session) bunları ekleyerek işlemek(commit). Bu dosyamızı da kaydedip çalıştırdıktan sonra sırada verilerimizi çekmeye geliyor. Bu dosyayı ne kadar çalıştırırsanız o kadar kayıt ekleyecektir. Bir kaç tane Hasan hoca kaydınız olursa bu yüzdendir.

query.py adını verdiğimiz bu dosyayı da çalıştırdığımızda bize öğretmenlerin verdiği dersleri ve Hasan hocanın verdiği dersleri listeleyecektir.

Çıktı şu şekilde olmalı;

Basit bir veritabanı için ideal oldu daha kompleks yapılar için de pek çok fonksiyonu var SQLAlchemy ve Django’s ORM’in.

Yararlandığım bazı kaynaklar;
http://blog.fatiherikli.com/post/django-orm-etkili-bir-sekilde-kullanmak/
https://tutorial.djangogirls.org/tr/django_orm/
http://www.agiledata.org/essays/impedanceMismatch.html
http://www.halitalptekin.com/elixir-ve-sqlalchemy.html

“ORM Nedir ve SQLAlchemy Kullanımı” üzerine 2 yorum

Bir Cevap Yazın