İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Python ORM's Bölüm 2 (SQLAlchemy)

BufGix - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2015
Nereden:
Phobos/Space
Mesajlar:
1.023
Konular:
74
Teşekkür (Etti):
314
Teşekkür (Aldı):
446
Ticaret:
(0) %
31-03-2018 23:42
#1
Python ORM's Bölüm 2 (SQLAlchemy)
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/...eewee-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:
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
---------------------
~Cahile gelmez benden hayır
Konu BufGix tarafından (05-04-2018 13:37 Saat 13:37 ) değiştirilmiştir. Sebep: Imlâ
bozkurt0607, b0mb, k3~, Javabex Teşekkür etti.
bozkurt0607 - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Nereden:
ANGARA
Yaş:
18
Mesajlar:
518
Konular:
63
Teşekkür (Etti):
386
Teşekkür (Aldı):
185
Ticaret:
(0) %
31-03-2018 23:53
#2
Eline sağlık
b0mb - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Nereden:
İzmir
Yaş:
17
Mesajlar:
471
Konular:
64
Teşekkür (Etti):
143
Teşekkür (Aldı):
221
Ticaret:
(0) %
01-04-2018 01:35
#3
Ellerine sağlık
c43s4r - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2017
Nereden:
DARK-NET
Mesajlar:
611
Konular:
24
Teşekkür (Etti):
11
Teşekkür (Aldı):
84
Ticaret:
(0) %
01-04-2018 01:35
#4
Elinize sağlık
---------------------
[NO SYSTEM İS SAFE]
AytuTan - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2018
Nereden:
IceLand
Mesajlar:
348
Konular:
63
Teşekkür (Etti):
50
Teşekkür (Aldı):
109
Ticaret:
(0) %
01-04-2018 01:36
#5
ellerinize sağlık...
---------------------
AYTUTAN

Mustafa Kemal 1881-193∞
PALA - ait Kullanıcı Resmi (Avatar)
Süper Moderatör
Üyelik tarihi:
03/2018
Mesajlar:
12.463
Konular:
190
Teşekkür (Etti):
436
Teşekkür (Aldı):
2564
Ticaret:
(0) %
01-04-2018 01:37
#6
Elinize sağlık.
WilkeSTHT - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
03/2018
Mesajlar:
774
Konular:
31
Teşekkür (Etti):
160
Teşekkür (Aldı):
115
Ticaret:
(0) %
01-04-2018 01:51
#7
Eline Emeğinize Sağlık
k3~
k3~ - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
10/2015
Mesajlar:
2.881
Konular:
202
Teşekkür (Etti):
1743
Teşekkür (Aldı):
3389
Ticaret:
(0) %
02-04-2018 22:06
#8
Ellerine sağlık

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı