Daha önceki yazımda ORM'nin ne oluğunu anlatmıştım ve Peewee ORM'ye küçük bir giriş yapmıştım.
Önceki konu : https://www.turkhackteam.org/python/1692205-python-orm-yapisi-ve-peewee-orm.html
Simdi ise belki de Python ORM'lerinin en gelişmişi olan SQLAlchemy'e şöyle bir bakacağız.

SQLAlchemy dediğimiz gibi gelişmiş ve biraz da karmaşık bir ORM'dir. Database, projeniz için önemli ise SQLAlchemy'i ögrenmek sizin için faydalı olacaktır.
Dilerseniz SQLAlchemy'nin yapısına şöyle bir bakalım.

Gördüğünüz gibi SQLAlchemy 3 katmandan oluşuyor. En üst kısımda ORM bulunuyor. 2. Katmanda SQLAlchemy'nin cekirdeği var. Bunun içinde Fieldler , Typesler ve SQL sorgulama dili bulunuyor. Yapının en altında ise Database API'si bulunuyor.
Simdi bir kaç kod yazarak bu yapıyı daha iyi anlayalım.
Öncelikle SQLAlchemy'i cıhazımıza kuralım:Önceki konu : https://www.turkhackteam.org/python/1692205-python-orm-yapisi-ve-peewee-orm.html
Simdi ise belki de Python ORM'lerinin en gelişmişi olan SQLAlchemy'e şöyle bir bakacağız.

SQLAlchemy dediğimiz gibi gelişmiş ve biraz da karmaşık bir ORM'dir. Database, projeniz için önemli ise SQLAlchemy'i ögrenmek sizin için faydalı olacaktır.
Dilerseniz SQLAlchemy'nin yapısına şöyle bir bakalım.

Gördüğünüz gibi SQLAlchemy 3 katmandan oluşuyor. En üst kısımda ORM bulunuyor. 2. Katmanda SQLAlchemy'nin cekirdeği var. Bunun içinde Fieldler , Typesler ve SQL sorgulama dili bulunuyor. Yapının en altında ise Database API'si bulunuyor.
Simdi bir kaç kod yazarak bu yapıyı daha iyi anlayalım.
Kod:
pip install SQLAlchemy
Daha sonra:
Kod:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Simdi bir Database oluşturalım dikkatle izleyin
Kod:
engine = create_engine('sqlite:/// /Desktop/test.db')
Görüldüğü gibi sqlite kullanacağımızı belirttik. Ve yolunu gösterdik.
Şimdi oluşturacağımız classlari genişleteceğimiz bir base class oluşturalım.
Kod:
base = declarative_base()
Simdi ise database'ye kayıt olacak bir sınıf yazalım.
Kod:
class Person(base):
__tablename__ = 'person'
name = Column(String, unique = True) #unique = Eşsiz
password = Column(String)
Sınıf içinde tanımladığımız __tablename__ database'ye kayıt olurken bu sınıftan oluşan örneklerin database'de hangi table ye ait olacağını yazdık. Peewee'deki fieldlerin yerini burada Column'lar aldı.
Database'ye kayıt olmak için SQLAlchemy'de session'lar kullanılır. Dikkatle izleyin.
Kod:
Session = sessionmaker()
Session.configure(bind = engine) #Bu sessionun hangi db ye bagli oldugunu belirttik
session = Session()
Session database ile uygulamamız arasında baglantıyı kuran yapıdır.
Simdi bir örnek oluşturalım ve database'ye kayıt eklemeye calışalım.
Kod:
omer = Person(name = 'Omer', password = '1234567') #nesnemiz oluştu
session.add(omer) #session a ekledik
Kod:
# omerin sifresinin guvensiz olduguna karar verdik ve guncelemek istedik
omer.password = '123456seven'
session nesnesi yapılan değişikliği anlar ve kendini ona göre update eder.
session nesnesi .add() methodu ile baska objeler alabilir. İçinde bulunan objeleri database ye eklemek için .commit() methodunu kullanmaliyiz.
Kod:
base.m-etadata.create_all(engine) # Databasedeki tablesleri olusturmak icin
session.commit()
Boylelikle Database kayıt işlemi bitti.
Simdi bir kaç sorgu yapalım ve konuyu bitirelim.
Kod:
for instance in session.query(Person).order_by(Person.name):
print instance.name
print instance.password
#Omer
#123456seven
Bir de database den objeyi getirmeyi görelim
Kod:
new_obj = session.query(Person).filter_by(name = 'Omer').first()
print new_obj.name
print new_obj.password
#Omer
#123456seven
Konumu burada bitiriyorum ama SQLAlchemy bunlarla sınırlı değil tabikii. Bu konuyu açmamdaki amaç Database programlamaya ilginizin artmasi ve kendinizi geliştirmenizdir. İyi çalişmalar.

Kaynak:
Object Relational Tutorial â SQLAlchemy 1.2 ********ation
Son düzenleme:

