İ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 Yapısı ve Peewee ORM

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) %
30-03-2018 17:37
#1
Python ORM Yapısı ve Peewee ORM
ORM(Object-relational mappers) ; bir ilişkisel veritabanıyla nesneyi bağlamak için M-eta data (veri hakkında veri, üstbilgi) tanımlayan programlama tekniğidir. Nesne yani kod ,Python,Java, C# gibi nesne yönelimli programlama(oop) dillerinde yazılır. ORM; ilişkisel veritabanı ve oop arasındaki veri dönüşümünü gerçekleştirir.Yüzeysel olarak bakıcak olursak ORM, yazılım ile veritabanı arasında bir köprü görevi görür.

Resim ORM Yapısı



* Veritabanındaki tabloları, sınıflara çevirir.
* ORM sayesinde kod yazarken veritabanında daha az zaman harcarız.
* ORM; veri kaynağı değiştiğinde onu kapsüller (encapsulates) ve gizler.
* Geliştirme ve bakım maaliyeti düşüktür. Çünkü nesne-veritabanı, veritabanı-nesne dönüşümünü otomatik gerçekleştirir.
* Daha az SQL sorguları yazarız.
* Veritabanını harita olarak önümüze sunar böylece karmaşık veritabanlarını anlamak kolaylaşır.
* ORM uygulama katmanı altında bulunur.
* ORM tüm nesne yönelimli programlama dilleri için mevcuttur.Java için bazı ORM’ler: Hibernate, JPA, EclipseLink…
* Python icin bazı ORM'ler: SQLAlchemy,Peewee,Django ORM,PonnyORM...


Resim ORM Python



Biz bu konuda Peewee ORM'sini inceleyeceğiz

Peewee ORM :
---------------------

Peewee yukarda bahsi gecen diğer ORM'ler gibi bir Python ORM'sidir. SqlAlchemy den daha basit ve daha küçüktür.


Kod yazarak Peewee ORM'yi daha iyi anlayalim.

Oncelikle Peewee ORM'yi makinemize kuralım.

Kod:
pip install peewee
Veya Git deposu üzerinden yükleyebilirsiniz.
Kod:
git clone https://github.com/coleifer/peewee.git 
cd peewee 
python setup.py install


Şimdi importlama işlemi yapalım ve kod yazmaya başlayalım.

Kod:
from peewee import *
Daha sonra Databasemizi tanımlayalım

Kod:
from peewee import * 

DB = SqliteDatabase('/Desktop/test/MyDatabase.db')
Görüldüğü gibi databasemizi tanımladik Sqlite kulanacağımızı belirttik ve parametre olarak databasenin yolunu gösterdik.

Daha sonra databaseye kayıt olacak bir class tanımlayalım.

Kod:
class Kisi(Model):

    class M-eta:
        database = DB       #Bu obje artik MyDatabase.db ye bagli
Sınıfimızı peewee'nin Model sınıfı ile genişlettik ve M-eta classına Kişi sınıfının bundan sonra yukarida belirtiğimiz DB'yı kullanacağını söyledik.

Daha sonra classımıza alanlar ekleyelim.
Kod:
class Kisi(Model):
    name = TextField()
    age = IntegerField()

    class M-eta:
        database = DB
Son olarak databasemize Kisi nesnelerini yazdırmak için table oluşturalım. Bunu DB.create_tables() ile oluşturacagız.

Kod:
def init():
    DB.connect()
    DB.create_tables ([Kisi], safe = True)
    DB.close()
Burada safe parametresi programı tekrar calıştırdığımızda daha önce oluşmuş olan tablesleri görmezden gelmesi icin.

Artık herşey hazır. Simdi databaseye kayıt ekleyelim. Bunu için 2 yöntem var.


Kod:
omer = Kisi(name = 'Omer', age = 18)  #Omer nesnesi tanimlandi
omer.save()   #Db ye kayit oldu
Yada Kisi sınıfının methodu kullanılabilir Kisi.create()
Kod:
omer = Kisi.create(name = 'Omer', age = 18)  #Db ye kayit oldu
Projenin bütünü:
Kod:
from peewee import *

DB = SqliteDatabase('/Desktop/test/MyDatabase.db')

def init():
    DB.connect()
    DB.create_tables([Kisi], safe = True)
    DB.close()

class Kisi(Model):
    name = TextField()
    age = IntegerField()

    class M-eta:
        database = DB

init()        
omer = Kisi.create(name = 'Omer', age = 18)
Databaseden verileri silmek icin Kisi classının delete_instance() methodu kullanılır.

Kod:
omer.delete_instance()
Son olarak birkaç sorgulama işlemi yapalım.

Databasedeki tüm nesneleri getirmek icin select() methodu kullanılır.
Kod:
for obje in Kisi.select():
    print obje.name       
    print obje.age

#Omer
#18
Databaseden her zaman butun verileri getirmek istemeyebiliriz. Bunun için where() kullanmamız gerek.

Kod:
obje = Kisi.select().where(Kisi.name == 'Omer').get()
print obje.name
print obje.age

#Omer
#18
where() methodunun nasıl parametre aldığına dikkat edin aynı if - else deki gibi bir sorgu ifadesi şeklinde (==). Kodun sonunda ise get() ile objeyi elde ediyoruz.

Burada konumun sonuna geliyorum. Bu anlatıklarım peewee nin çok küçük bir kısmı. Umarım Python ORM hakkında kafanızda birseyler oluşmuştur.İyi calısmalar...



Kaynak:
peewee — peewee 3.2.0 ********ation
https://www.fullstackpython.com/obje...pers-orms.html
https://www.kadinyazilimci.com/ormob...mapping-nedir/

---------------------
~Cahile gelmez benden hayır
Konu BufGix tarafından (30-03-2018 17:44 Saat 17:44 ) değiştirilmiştir.
bozkurt0607, k3~, Hacknology Teşekkür etti.
PALA - ait Kullanıcı Resmi (Avatar)
Süper Moderatör
Üyelik tarihi:
03/2018
Mesajlar:
12.436
Konular:
186
Teşekkür (Etti):
428
Teşekkür (Aldı):
2550
Ticaret:
(0) %
30-03-2018 17:43
#2
Elinize sağlık hocam,dün itibariyle python'a başladım.Hayırlısı olsun sonra C++ diye yardırıcam bakalım.
---------------------
Bir deniz cesaret, bir tutam bıyık.
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) %
30-03-2018 17:48
#3
Eline sağlık
Greendex - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
12/2017
Mesajlar:
752
Konular:
56
Teşekkür (Etti):
37
Teşekkür (Aldı):
225
Ticaret:
(0) %
30-03-2018 17:56
#4
Elinize, 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) %
30-03-2018 18:41
#5
Eline sağlık
kenzai - ait Kullanıcı Resmi (Avatar)
V.I.P Üyelik Sorumlusu
Üyelik tarihi:
12/2013
Mesajlar:
8.470
Konular:
1441
Teşekkür (Etti):
3797
Teşekkür (Aldı):
2488
Ticaret:
(0) %
30-03-2018 18:44
#6
Elinize sağlık önemli bir konu.
léonαrdo - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
07/2017
Mesajlar:
2.317
Konular:
47
Teşekkür (Etti):
558
Teşekkür (Aldı):
939
Ticaret:
(0) %
30-03-2018 18:49
#7
Ellerine sağlık easyly Ciddi manada önemli ve başarılı bir konu
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) %
30-03-2018 22:04
#8
Alıntı:
Greendex´isimli üyeden Alıntı Mesajı göster
Elinize, emeğinize sağlık.
Tesekkur ederim.

Alıntı:
KeyLo99´isimli üyeden Alıntı Mesajı göster
Eline sağlık
Tesekkur ederim

Alıntı:
PalaMukan´isimli üyeden Alıntı Mesajı göster
Elinize sağlık hocam,dün itibariyle python'a başladım.Hayırlısı olsun sonra C++ diye yardırıcam bakalım.
Tesekkur ederim. Tavsiyem Pythonu ogrendim deyip baska dillere nedensiz yere gecme.
---------------------
~Cahile gelmez benden hayır
DarqSs - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2018
Mesajlar:
127
Konular:
10
Teşekkür (Etti):
9
Teşekkür (Aldı):
9
Ticaret:
(0) %
31-03-2018 18:57
#9
Ellerine sağlık hocam uğraşmışsınız
---------------------
BerkayOnlineX

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ı