SQLAlchemy İle Veri Tabanı Modelleme Nasıl Yapılır?

SQLAlchemy İle Veri Tabanı Modelleme Nasıl Yapılır?

SQLAlchemy ile veri tabanı modelleme, veri tabanı tasarımı ve yönetimi sürecinde size yardımcı olan yüksek verimlilikli bir araçtır Bu makalede, SQLAlchemy kullanarak nasıl veri tabanı modellemesi yapabileceğinizi öğrenebilirsiniz Kendi uygulamanızda veri tabanı işlemlerini kolayca yapmanızı sağlayacak bu aracı keşfedin

SQLAlchemy İle Veri Tabanı Modelleme Nasıl Yapılır?

SQLAlchemy, Python programlama dilinde veri tabanı modelleme işlemlerini gerçekleştirebilmek için kullanılan bir ORM (Object Relational Mapping) kütüphanesidir. Bu makalede, SQLAlchemy kullanarak veri tabanı modelleme işlemlerinin nasıl yapıldığını öğreneceksiniz. İlk olarak, SQLAlchemy'ı kurmak gerekiyor.

SQLAlchemy'ın kurulumu oldukça kolaydır. Terminale pip install SQLAlchemy komutu girilerek kurulum gerçekleştirilebilir. Ardından, bir veri tabanı URL'si oluşturulması gerekiyor. Bu URL, veri tabanına bağlanırken hangi veri tabanı yöneticisini (örneğin PostgresSQL, SQLite) ve hangi URL'yi kullanacağımızı belirtir. Daha sonra, veri tabanı bağlantısını oluşturmak için SQLAlchemy kütüphanesinde yer alan create_engine fonksiyonu kullanabilirsiniz.

SQLAlchemy ile veritabanı modelleme işlemleri yapmak, basit ve anlaşılır bir yapıya sahiptir. Declerative_base sınıfını kullanarak tablo oluşturma işlemi gerçekleştirilebilir. Tablo oluşturulurken, tablonun değişkenleri (kolonları) belirtilir. SQLAlchemy ile oluşturulan tablolar arasında ilişkiler One-To-Many, Many-To-One, One-To-One, Many-To-Many olmak üzere farklı yapılar kullanılabilir.

SQLAlchemy, veritabanı modellerine filtreleme, sıralama, toplama, sayma ve ortalama alma gibi işlemler gerçekleştirmek için birden fazla fonksiyon ile desteklenmektedir. Bu fonksiyonlar, sorgu işlemlerinin gerçekleştirilmesinde oldukça önemli bir konumda yer alır. Filtreleme işlemleri için filter(), sıralama işlemleri için order_by(), toplama, sayma ve ortalama saklama gibi işlemler için func() fonksiyonları kullanılır.


SQLAlchemy Nedir?

SQLAlchemy, Python programlama dili için geliştirilmiş bir ORM (Object Relational Mapping) kütüphanesidir. ORM, veri tabanı işlemlerini yürütmek için kullanılan bir teknolojidir. SQLAlchemy, veri tabanı işlemleri yaparken kod yazmanın kolaylaştırılmasını ve daha hızlı işlemler yapmayı sağlar.

SQLAlchemy, kullanımı kolay ve verimli bir kütüphanedir. Özellikle, büyük ve karmaşık veri tabanlarıyla uğraşan yazılımcılar için oldukça faydalıdır. SQLAlchemy'nin başlıca avantajlarından biri, farklı veri tabanlarıyla uyumlu olmasıdır. Bu özellik sayesinde, yazılımcılar farklı veri tabanı yöneticileri arasında geçiş yapabilirler ve kodlarını yeniden yazmak zorunda kalmazlar.

SQLAlchemy, veri tabanı işlemlerinin daha kolay yönetilmesini sağlamak amacıyla ORM mimarisini kullanır. ORM, veri veritabanı işlemlerini yaparken, obje yönelimli programlama yapısını kullanır. Bu sayede, veri tabanı işlemleri daha kolay anlaşılır ve daha az kod yazmayı gerektirir.

Bu nedenlerden dolayı, SQLAlchemy oldukça popüler bir kütüphanedir. Python programlama dilinde veri tabanı işlemleri yapmak isteyenler için vazgeçilmez bir kütüphanedir.


SQLAlchemy Kurulumu

SQLAlchemy Kurulumu

SQLAlchemy kurulumu oldukça kolaydır. İlk olarak, terminale pip install SQLAlchemy komutunu girerek kurulumu yapabilirsiniz. Böylece, Python projeniz için SQLAlchemy'ı kullanmaya başlayabilirsiniz.

Ayrıca, farklı veri tabanı yöneticilerine bağlı olarak, ilgili sürücüleri de yüklemeniz gerekebilir. Örneğin, PostgreSQL veri tabanı kullanacak iseniz, psycopg2 sürücüsünü yüklemeniz gerekebilir. İlgili sürücüleri yükledikten sonra, SQLAlchemy ile bağlantı kurmak için hazırsınız demektir.

pip install SQLAlchemy

SQLAlchemy'ı yüklemek oldukça basittir. Bunun için, terminale pip install SQLAlchemy komutunu yazmanız yeterlidir. Bu komut, pip paket yöneticisini kullanarak SQLAlchemy kütüphanesinin en son sürümünü indirecektir.

Bu komutun tamamlanması için internet bağlantınızın olması gerekmektedir. Eğer internete bağlı değilseniz, SQLAlchemy'ı indirip kurmanın diğer yollarını araştırabilirsiniz.

komutunu girerek kurulumu yapabilirsiniz.

SQLAlchemy kurulumu oldukça basittir. İlk olarak, terminale pip install SQLAlchemy komutunu girerek kurulumu yapabilirsiniz. Bu komut, SQLAlchemy kütüphanesini indirir ve kurulumu tamamlar. Kurulum işlemi tamamlandıktan sonra, sıradaki adım SQLAlchemy veri tabanı bağlantısı oluşturmaktır. Veri tabanı bağlantısı kurmadan önce, hangi veri tabanını kullanacağınızı belirtmelisiniz. Ayrıca, veri tabanı bağlantısı oluşturmak için veri tabanı URL'si oluşturmanız gerekmektedir.


SQLAlchemy Veri Tabanı Bağlantısı

SQLAlchemy kullanarak veri tabanı bağlantısı kurmak oldukça kolaydır. İlk olarak bir veri tabanı URL'si oluşturmalısınız. Veri tabanı URL'si, veri tabanına bağlanırken hangi veri tabanı yöneticisini (örneğin PostgresSQL, SQLite) ve hangi URL'yi kullanacağınızı belirtir.

Bunun için, SQLAlchemy tarafından desteklenen veri tabanıların URL formatına uygun olarak bir URL oluşturmanız gerekiyor. Örneğin, SQLite veri tabanı için bir URL şöyle olabilir: 'sqlite:///test.db'. Bu URL, 'test.db' adlı SQLite veri tabanına bağlanmanızı sağlar.

Ardından, bu URL'yi kullanarak SQLAlchemy ile veri tabanı bağlantısı oluşturabilirsiniz. Veri tabanı bağlantısı oluşturmak için SQLAlchemy kütüphanesinde yer alan create_engine fonksiyonu kullanılabilir. Bu fonksiyon, veri tabanı URL'sini parametre olarak alır ve veri tabanı bağlantısını oluşturur.

Örnek Kod
from sqlalchemy import create_engineengine = create_engine('sqlite:///test.db')

Yukarıdaki örnek kod, 'test.db' adlı SQLite veri tabanına bağlantı oluşturur. Bu bağlantı, 'engine' adlı değişkene atanır ve daha sonra SQLAlchemy işlemleri için bu değişken kullanılır.


Veri Tabanı URL'si Oluşturma

Veri tabanı URL'si, veri tabanına bağlanırken hangi veri tabanı yöneticisini (örneğin PostgresSQL, SQLite) ve hangi URL'yi kullanacağınızı belirtir. SQLAlchemy ile bir veri tabanı URL'si oluşturmak için, farklı veri tabanı yöneticileri için farklı URL formatları kullanılır.

Örneğin, SQLite için URL formatı şöyledir:

sqlite:/// path_to_database_file

Bu URL formatı, veri tabanının bulunduğu yolu belirtir. Örnek olarak;

sqlite:///C:/Users/myuser/mydatabase.db

PostgreSQL için URL formatı ise şu şekildedir:

postgresql:// username:password @ host : port /database_name

Bu URL formatı da, veri tabanına bağlanmak için gerekli olan bilgileri sağlar. Örnek olarak;

postgresql://myuser:mypassword@localhost:5432/mydatabase

SQLAlchemy, MySQL, Oracle ve Microsoft SQL Server gibi diğer veri tabanı yöneticileri için de URL formatlarını destekler.


Veri Tabanı Bağlantısı Oluşturma

Veri tabanı bağlantısı kurmak için SQLAlchemy kütüphanesinde yer alan create_engine fonksiyonu kullanılır. Bu fonksiyon, veri tabanı URL'sini parametre olarak alır ve veri tabanına bağlantı kurmanızı sağlar. URL, veri tabanına nasıl bağlanacağınızı belirler. Örneğin, SQLite kullanıyorsanız URL, SQLite dosyanızın konumunu gösterir. PostgreSQL kullanıyorsanız URL, verilerin depolanacağı sunucu ve veritabanı adını içerir. Bu fonksiyon, veri tabanı bağlantısının kurulması için gerekli olan tüm ayarları yapar.

Örnek olarak SQLite kullanarak bir örnek verelim. İlk olarak veri tabanına bağlanmak için bir URL oluştururuz:

```pythonfrom sqlalchemy import create_engine

url = 'sqlite:///example.db'engine = create_engine(url)```

URL'nin başına, veritabanı yöneticisini belirten bir isim yazılır. SQLite kullanıyorsak bu isim ‘sqlite://’ şeklinde olur. Daha sonra, dosya adını yazarak URL'mizi tamamlarız. Bu örnekte veritabanı adı ‘example.db’. URL'yi kullanarak veri tabanına bağlantı yaptıktan sonra, bu veritabanı üzerinde sorgu işlemleri yapabilirsiniz.

Veri tabanı bağlantısını kurmak, veri tabanı modelleme işleminin ilk adımıdır. Bu işlemi doğru bir şekilde gerçekleştirdiğinizden emin olunuz.

create_engine

SQLAlchemy ile veri tabanı bağlantısı oluşturmak için create_engine fonksiyonunu kullanabilirsiniz. Bu fonksiyon, veri tabanı URL'si ve opsiyonel olarak diğer parametreleri alır. create_engine fonksiyonunu kullanarak veri tabanınızla bağlantı kurabilir ve SQLAlchemy ORM'i kullanarak veri tabanınıza erişebilirsiniz.

Örneğin, PostgreSQL veri tabanına bağlanmak istiyorsanız, create_engine fonksiyonuna aşağıdaki gibi bir URL geçmeniz gerekebilir:

postgresql://user:password@host:port/database_name

  • user: Veri tabanına erişmek için kullanılan kullanıcı adı
  • password: Veri tabanına erişmek için kullanılan şifre
  • host: Veri tabanı sunucusunun ana bilgisayar adı veya IP adresi
  • port: Veri tabanı sunucusunun kullanacağı port numarası
  • database_name: Veri tabanının adı

Veri tabanı URL'sini oluşturduktan sonra, bu URL'yi create_engine fonksiyonuna geçirerek veri tabanı bağlantısını oluşturabilirsiniz.

Örneğin:

from sqlalchemy import create_engine# PostgreSQL veri tabanına bağlanmak için URL oluşturmaurl = 'postgresql://username:password@localhost/mydatabase'# Veri tabanı bağlantısını oluşturmaengine = create_engine(url)

Bu örnekte, create_engine fonksiyonu kullanılarak PostgreSQL veri tabanına bağlanmak için bir URL oluşturduk ve daha sonra bu URL'yi create_engine fonksiyonuna geçirerek veri tabanı bağlantısını oluşturduk.

fonksiyonunu kullanabilirsiniz.

SQLAlchemy ile veri tabanındaki verileri toplama, sayma ve ortalamalarını alma işlemleri yapmak oldukça kolaydır. Bunun için func fonksiyonunu kullanabilirsiniz. Bu fonksiyon, SQL işlevlerine karşılık gelir ve veritabanındaki verileri işlemek için kullanılır.

Bu fonksiyonun kullanımı için öncelikle SQLAlchemy import edilmelidir. Ardından, örneğin sütunlardaki değerlerin toplamını almak için aşağıdaki gibi bir sorgu oluşturulabilir:

Örnek:
from sqlalchemy import funcsession.query(func.sum(TableName.column_name)).scalar()

Bu sorgu, TableName adlı bir tablodaki belirli bir column_name sütununun toplamını hesaplar ve scalar() fonksiyonu sayesinde sonucu döndürür.

Toplama işlemi dışında, func fonksiyonu ile sayma ve ortalama alma işlemleri de yapılabilmektedir. Örnek olarak, veritabanındaki bir tablodaki belirli bir sütundaki değerlerin ortalama değerini hesaplamak için aşağıdaki sorgu kullanılabilir:

Örnek:
from sqlalchemy import funcsession.query(func.avg(TableName.column_name)).scalar()

Bu sorgu, TableName adlı bir tablodaki belirli bir column_name sütununun ortalama değerini hesaplar ve scalar() fonksiyonu sayesinde sonucu döndürür.


SQLAlchemy Veri Tabanı Modelleme

SQLAlchemy, Python programlama dilinde veri tabanı modelleme işlemlerinde sıkça kullanılan bir ORM (Object Relational Mapping) kütüphanesidir. SQLAlchemy ile veri tabanı modelleme yapmak, veri tabanına erişim ve veri işleme işlemlerini kolaylaştırır.

SQLAlchemy ile veri tabanı modelleme yapmak için, ilk olarak declarative_base sınıfını kullanmalısınız. Bu sınıf, veri tabanı modelleri için temel bir şablon sunar ve veri tabanınızın yapısının nasıl olacağını tanımlamanıza olanak sağlar.

SQLAlchemy ile bir tablo oluşturmak için, önce declarative_basesınıfından türetilmiş bir sınıf oluşturmanız gerekiyor. Bu sınıfın içinde yer alan ilgili kolonlar ile tablonun yapısını tanımlayabilirsiniz.

SQLAlchemy ile veri tabanı modelleme yaparken, veri tabanında yer alan tablolar arasında farklı ilişki türleri olabilir. En temel ilişki türü ise One-to-Many ilişkisidir. Bu ilişki türü, bir ana tabloya bağlı çok sayıda alt tablo ile birlikte kullanılır. SQLAlchemy ile veri tabanı modelleme işlemlerinde yer alan diğer ilişki türleri ise Many-to-Many ve One-to-One şeklinde sıralanabilir.

SQLAlchemy ile veri tabanı modelleme yaparken, hangi veri tabanı yöneticisini kullanacağınızı belirtmek için bir veri tabanı URL'si oluşturmanız da gerekiyor. Bu URL, veri tabanına bağlanırken hangi yöneticiyi ve hangi URL'yi kullanacağınızı belirtir. Doğru veri tabanı URL'si oluşturmak, veri tabanı modellemenin doğru şekilde yapılandırılmasında önemlidir.

declarative_base

declarative_base, SQLAlchemy kullanarak veri tabanı modellemesi yapmak için temel sınıftır. Bu sınıf, low level SQLAlchemy tablo ifade yapısını kullanmadan veritabanı modellerini tanımlamanızı sağlar.

declarative_base sınıfından türetilen sınıflar, belirli bir veritabanı tablosunu temsil ederler ve tüm tabloların ortak özelliklerini bir araya getirirler. Bu sayede tablolar arasındaki ilişkiler daha kolay yönetilebilir hale gelir.

Bir veritabanı sütunu belirtmek için, veritabanı sütunu adına sahip bir sınıf veritabanı sınıfından türetilir ve sınıf düzeyinde bir veritabanı sütunu tanımlanır. Sütun, sütun adı ve sütun veri türü gibi özellikleri içerir. Sınıflar arasındaki ilişkiler ise foreign key'ler (yabancı anahtarlar) kullanılarak ifade edilir.

declarative_base'ün Özellikleri
- Sınıf tabanlı veritabanı modellemesi yapmak için gereklidir.
- Tablolar arasındaki ilişkileri kolay yönetilebilir hale getirir.
- Tüm tabloların ortak özelliklerini bir arada tutar.
sınıfını kullanabilirsiniz.

SQLAlchemy ile bir tablo oluşturmak istiyorsanız, declarative_base sınıfından türetilmiş bir sınıf oluşturmanız gerekir. Bu sınıf, oluşturulan tablonun özelliklerini belirtir. Örneğin:

Kolon Adı Veri Tipi
id Integer
ad String(50)
soyad String(50)

Bu özellikleri belirten bir sınıf, aynı zamanda tabloda yer alacak kolon isimlerinin ve veri tiplerinin belirlenmesini sağlar. Oluşturulan bu sınıf, daha sonra metadata sınıfına eklenerek tablonun oluşturulması sağlanır. Bu şekilde, oluşturulan sınıf tablonun belirli özelliklerini belirleyerek, veri tabanında bir tablo oluşumunu sağlar.


Tablo Oluşturma ve Kolonlar

SQLAlchemy ile bir tablo oluşturmak için, declarative_base sınıfından türetilmiş bir sınıf oluşturmanız gerekir. Bu sınıfın adı, tablonun adını belirtir ve sınıfın içerisinde tanımlanan değişkenler ise tablonun kolonlarını belirtir. Örneğin:

from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, StringBase = declarative_base()class User(Base):    __tablename__ = 'users'    id = Column(Integer, primary_key=True)    username = Column(String)    email = Column(String)

Bu örnekte, User isimli bir sınıf oluşturduk ve users isimli bir tablo oluşturmak için __tablename__ değişkenini kullandık. Tabloda, id, username ve email isimli üç kolon tanımladık. Column fonksiyonu ile kolonların veri tipini belirledik.

Bir tablo oluşturduktan sonra, Base.metadata.create_all(engine) komutu ile tabloyu veri tabanına ekleyebilirsiniz. Bu komutu kullanmadan önce, öncelikle bir veri tabanı bağlantısı kurmanız gerekir.

declarative_base

declarative_base SQLAlchemy ile veri tabanı modelleme yapmak için kullanılan bir sınıftır. Bu sınıf, veri tabanı modelinizi tanımlamak için kullanabileceğiniz bazı özellikler sağlar. Örneğin, bir sınıf oluştururken __tablename__ özelliğini belirterek, oluşturduğunuz sınıfın hangi veri tabanı tablosuna karşılık geldiğini belirleyebilirsiniz.

Bunun yanı sıra, kolonlarınızı belirleyebilir ve bunları sınıfın özellikleri olarak tanımlayabilirsiniz. Ayrıca, bir sınıfın diğer sınıflarla olan ilişkilerini belirleyebilirsiniz. Tüm bu özellikler, declarative_base sınıfını kullanarak kolayca oluşturulabilir.

Veri tabanı modelinizi oluşturduktan sonra, veritabanına veri eklemek, veri silmek veya veri güncellemek için kullanabileceğiniz SQL sorguları yazabilirsiniz. SQLAlchemy, bu sorguları programlama dili Python ile yazabilmenize olanak sağlar. Bu nedenle, veri tabanı işlemleri yaparken, SQL dilindeki bilgi seviyenize ihtiyaç duymadan, kolayca veritabanı işlemleri yapabilirsiniz.

sınıfından türetilmiş bir sınıf oluşturmanız gerekir.

SQLAlchemy ile bir tablo oluşturmak istiyorsanız, öncelikle declarative_base sınıfından türetilmiş bir sınıf oluşturmanız gerekiyor. Bu sınıf, tablonun adını ve kolonlarını belirleyeceğiniz yerdir.

Örnek olarak, bir blog uygulaması için bir Post tablosu oluşturabilirsiniz. Bu tablonun id, title, content, ve created_at gibi kolonları olabilir.

Aşağıdaki örnek kodda, declarative_base sınıfından türetilmiş bir Post sınıfı oluşturulmuştur ve bu sınıfın __tablename__ parametresi ile tablo adı belirtilmiştir. Aynı zamanda, sınıf içinde kolonlar tanımlanmıştır.

```from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, DateTime

Base = declarative_base()

class Post(Base): __tablename__ = 'posts'

id = Column(Integer, primary_key=True) title = Column(String) content = Column(String) created_at = Column(DateTime)```

Bu şekilde, Post tablosu oluşturulmuş ve kolonları tanımlanmıştır. Artık bu tabloyu veri tabanına eklemek için, önce create_engine fonksiyonu ile bir veri tabanı bağlantısı oluşturmalısınız, ardından oluşturduğunuz tabloyu veri tabanına ekleyebilirsiniz.


Tablo İlişkileri

One-to-Many ilişkisidir. Bu ilişkide, bir tablodaki tek bir satır, diğer tablodaki birden fazla satıra denk gelmektedir. Örneğin, bir kullanıcının birden fazla hesabı olabilir. Bu durumda, kullanıcı tablosu birinci tablo olarak oluşturulurken, hesap tablosu ikinci tablo olarak oluşturulur ve bu iki tablo arasında ilişki kurulur. Bu ilişkiye göre, bir kullanıcının birden fazla hesabı olabilir, ancak herhesap sadece bir kullanıcıya ait olabilir. SQLAlchemy'de birbirine bağlı tablolar, ilişkisel bir yapıda olduğundan, bir tablodaki verilerde yapılan bir değişiklik, diğer tabloya da yansır. Bu nedenle, tablo ilişkilerinin doğru şekilde belirlenmesi oldukça önemlidir. SQLAlchemy'de One-to-One, Many-to-One, Many-to-Many gibi diğer ilişki türleri de mevcuttur, ancak bunların hepsi One-to-Many ilişkilerinin çeşitli varyasyonlarıdır.

One-to-Many

Veri tabanı modellemede en çok kullanılan ilişki türü, One-to-Many ilişkisidir. Bu ilişki türünde, bir tane ana model, bir ya da daha fazla alt model ile ilişkilendirilir. Ana modeldeki her bir öğe, alt modelde birden fazla öğeye karşılık gelir.

Örneğin, bir müşteri (Customers) tablosu ile müşterinin siparişleri (Orders) tablosu arasında One-to-Many ilişkisi olabilir. Müşteriler tablosunda her müşteri bir kez yer alırken, siparişler tablosunda aynı müşteri birden fazla kez yer alabilir.

Customers
Customer_ID Customer_Name Customer_Email Customer_Phone
1 Ahmet ahmet@mail.com 555-123-4567
2 Mehmet mehmet@mail.com 555-987-6543
Orders
Order_ID Product Price Customer_ID
1 Masa 100 1
2 Sandalye 50 1
3 Dolap 200 2

Bu tablolarda, Customers tablosunda yer alan Ahmet ve Mehmet isimli müşteriler birer kere yer alırken, Orders tablosunda Ahmet için iki tane, Mehmet için bir tane sipariş kaydı vardır. Bu şekilde, One-to-Many ilişkisi sayesinde, bir müşterinin birden fazla siparişi gerçekleştirilmiş olabilir.

ilişkisidir.

One-to-Many ilişkisi, birincil tablodaki bir kaydın ikincil tabloda birden çok kaydı olduğu durumlarda kullanılır. Bu ilişki, SQLAlchemy ile basit bir şekilde modelleştirilebilir. Bir örnekle anlatmak gerekirse, bir üniversite öğrencisi kaydolduğu bölümle bağlantılıdır. Aynı bölüme kaydolan başka öğrenciler de olabilir. Bu durumda, Üniversite Öğrenci tablosu ile Bölüm tablosu arasında One-to-Many ilişkisi vardır. Bu ilişki, SQLAlchemy ile aşağıdaki şekilde tanımlanabilir:

```pythonfrom sqlalchemy import Column, Integer, String, ForeignKeyfrom sqlalchemy.orm import relationship

class Bolum(Base): __tablename__ = 'bolum' id = Column(Integer, primary_key=True) ad = Column(String)

class Ogrenci(Base): __tablename__ = 'ogrenci' id = Column(Integer, primary_key=True) ad = Column(String) bolum_id = Column(Integer, ForeignKey('bolum.id')) bolum = relationship("Bolum", backref="ogrenciler")```

Yukarıdaki örnekte, Ogrenci tablosunda Bolum tablosu ile bir ilişki oluşturuldu. Bu ilişki, "bolum" adında bir foreign key ile tanımlandı. Ayrıca "bolum" adında bir relationship tanımlandı. relationship fonksiyonu, tablolar arasındaki ilişkiyi tanımlamak için kullanılır. backref parametresi ise birincil tabloya doğru olan yönü gösterir. Bu örnekte, Bolum tablosuna doğru olan yönün adı "ogrenciler" olarak belirlenmiştir. Böylece, bir bölümde kayıtlı olan öğrencileri görmek istediğimizde, Bolum tablosunun "ogrenciler" özelliğini kullanabiliriz.


SQLAlchemy Sorgu İşleme

SQLAlchemy ile veri tabanı modelleme yapmak, veri tabanında işlem yapmanızı sağlayan kullanışlı bir özelliktir. Veri tabanınızda yapmak istediğiniz sorguları yazmak için SQL dilinde oldukça hakim olmanız gerekmektedir. Ancak SQLAlchemy ile birlikte sadece Python kodları kullanarak veri tabanı modelleme yapabilirsiniz.

Veri tabanı modelleri oluşturduktan sonra, bu modellere sorgu yapabilirsiniz. SQLAlchemy, veri tabanı modelleme işlemlerinde birçok sorgu işlemi yapmanıza olanak tanır. Filtreleme, sıralama gibi işlemler yapmak oldukça kolaydır.

SQLAlchemy ile filtreleme yapmak için filter fonksiyonunu kullanabilirsiniz. Örneğin, bir kullanıcının adına göre bir sorgu yapmak istiyorsanız şu kodları kullanabilirsiniz:

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerfrom my_models import User  # user modelini yükleyinengine = create_engine('sqlite:///my_database.db')Session = sessionmaker(bind=engine)session = Session()filtered_users = session.query(User).filter(User.name == 'Alice').all()

Bu kodlar, my_database.db adlı SQLite veri tabanında bulunan User adlı tablodan sadece Adı Alice olan kullanıcılar verisini getirecektir.

SQLAlchemy ile sıralama yapmak için ise order_by fonksiyonunu kullanabilirsiniz. Örneğin, kullanıcıların yaşlarına göre sıralama yapmak istiyorsanız şu kodları kullanabilirsiniz:

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerfrom my_models import User  # user modelini yükleyinengine = create_engine('sqlite:///my_database.db')Session = sessionmaker(bind=engine)session = Session()ordered_users = session.query(User).order_by(User.age).all()

Bu kodlar, my_database.db adlı SQLite veri tabanında bulunan User adlı tabloyu yaş sırasına göre sıralayarak kullanıcılar verisini getirecektir.

Toplama, sayma ve ortalama alma işlemleri yapmak için func fonksiyonunu kullanabilirsiniz. Örneğin, kullanıcıların yaş ortalamasını almak için şu kodları kullanabilirsiniz:

from sqlalchemy import create_engine, funcfrom sqlalchemy.orm import sessionmakerfrom my_models import User  # user modelini yükleyinengine = create_engine('sqlite:///my_database.db')Session = sessionmaker(bind=engine)session = Session()average_age = session.query(func.avg(User.age)).scalar()

Bu kodlar, my_database.db adlı SQLite veri tabanında bulunan User adlı tablonun yaş verilerinden yaş ortalamasını hesaplayacaktır.


Filtreleme

SQLAlchemy ile veri tabanında bulunan belirli verileri almak için filtreleme işlemi yapabilirsiniz. Bu işlem, çok büyük veri tabanlarında önemlidir ve sorgunun çalışma süresini oldukça azaltır.

Filtreleme yapmak için SQLAlchemy kütüphanesinde yer alan filter fonksiyonunu kullanabilirsiniz. Bu fonksiyon, sorgunuzu belirlediğiniz kriterlere göre filtreleyerek size istediğiniz sonuçları verir.

Örnek olarak, bir restoran veri tabanında, fiyatı belirli bir miktarın üzerinde olan yemekleri filtrelemek için aşağıdaki kodu kullanabilirsiniz:

from sqlalchemy import create_engine, Column, Integer, String, funcfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmakerengine = create_engine('postgresql://username:password@localhost/mydatabase')Base = declarative_base()Session = sessionmaker(bind=engine)session = Session()class Food(Base):    __tablename__ = 'foods'    id = Column(Integer, primary_key=True)    name = Column(String(50))    price = Column(Integer)    def __repr__(self):        return "" % (                                self.name, self.price)session.query(Food).filter(Food.price > 20).all()

Bu kodda, filter fonksiyonu kullanılarak veri tabanından fiyatı 20 TL'nin üzerinde olan yemekler filtrelenmiştir. Bu sorgudan dönen sonuçlarda sadece fiyatı 20 TL'nin üzerinde olan yemekler listelenir. Filtreleme, sorgunun çalışma süresini azaltarak veri tabanı yönetiminde önemli bir role sahiptir.

filter

SQLAlchemy ile veri tabanı modellerine sorgu yaparken filtreleme kullanabilirsiniz. Filtreleme işlemini yapmak için filter fonksiyonunu kullanabilirsiniz. Filtreleme fonksiyonu, istediğiniz sütunlarda belirli kriterlere uyan verileri getirmenizi sağlar.Örneğin, bir öğrenci veri tabanında öğrencilerin adları ve notları yer alıyor olsun. Sadece notu 80 ve üzeri olan öğrencileri getirmek istediğinizde filter fonksiyonunu şu şekilde kullanabilirsiniz: session.query(Ogrenci).filter(Ogrenci.notu >= 80).all()

Yukarıdaki kodda, session.query(Ogrenci) ifadesi ile "Ogrenci" sınıfı tablosuna bağlanılır. Sonrasında filter fonksiyonu ile notu 80 ve üzerinde olan öğrenciler belirlenir ve .all() metodu ile tüm öğrencilerin listesi çekilir.

Filter fonksiyonu, birçok kriteri bir arada kullanarak filtreleme yapabilmenize de olanak tanır. Örneğin, notu 80 ve üzeri olan öğrencilerin adları "Ahmet" ise şu kodu kullanabilirsiniz: session.query(Ogrenci).filter(Ogrenci.notu >= 80, Ogrenci.ogrenci_ad == "Ahmet").all()

Ayrıca, filter fonksiyonunun yanı sıra filter_by fonksiyonunu da kullanabilirsiniz. Farklılıkları ise filter fonksiyonunda verilen kriterlerin and ile birleştirilmesi iken, filter_by fonksiyonunda kriterler virgülle ayrılarak birbirleriyle or ilişkisi kurar.

SQLAlchemy ile filtreleme işlemleri, veri tabanından istenilen verileri çekmek ve işlemek için oldukça önemlidir. Doğru filtreleme işlemleri ile veri tabanında aradığınız verilere daha hızlı ve doğru bir şekilde ulaşabilirsiniz.

fonksiyonunu kullanabilirsiniz.

SQLAlchemy ile toplama, sayma ve ortalama alma işlemleri yapmak için func fonksiyonunu kullanabilirsiniz. Örneğin;

İşlev Açıklama Örnek
func.sum() Belirtilen sütunun toplamını alır. session.query(func.sum(Table.column)).scalar()
func.count() Belirtilen sütunun içindeki verilerin sayısını verir. session.query(func.count(Table.column)).scalar()
func.avg() Belirtilen sütundaki verilerin ortalamasını alır. session.query(func.avg(Table.column)).scalar()

Bu fonksiyonlar, sorgularınızda tablonuzdaki verileri daha etkili bir şekilde yönetmenize olanak tanır.


Sıralama

SQLAlchemy ile sıralama yapmak için order_by fonksiyonunu kullanabilirsiniz. Bu fonksiyon, sıralama kriterlerini belirlemenize olanak tanır ve SQL tarafında ORDER BY ifadesini oluşturur.

order_by fonksiyonu, SQLAlchemy tablolarında kullanılan sütunların isimlerini ve sıralama yöntemlerini (artan veya azalan) içeren bir liste alır. Örneğin, aşağıdaki kod bloğu, users tablosundaki yaş sütununa göre artan sırayla sıralama yapar:

from sqlalchemy.orm import sessionmakerfrom sqlalchemy import create_engineengine = create_engine('postgresql://username:password@server:port/database')Session = sessionmaker(bind=engine)session = Session()from myapp.models import Userstmt = session.query(User).order_by(User.age).statement

Bu örnekte, order_by fonksiyonu, User tablosundaki age sütununa göre artan sırayla sıralama yapar. Eğer öncelikle yaşa göre azalan, sonra da isme göre artan sıralama yapmak isterseniz, aşağıdaki kod bloğunu kullanabilirsiniz:

stmt = session.query(User).order_by(User.age.desc(), User.name.asc()).statement

Bu örnekte, order_by fonksiyonu, sıralama için iki sütun belirtilmiştir. İlk sıralama kriteri olarak yaş sütunu kullanılmış ve desc yöntemiyle azalan sıralama tercih edilmiştir. İkinci sıralama kriteri olarak isim sütunu kullanılmış ve varsayılan olarak artan sıralama tercih edilmiştir.

SQLAlchemy ile sıralama yapmak oldukça kolaydır ve büyük veri kümelerinde de hızlı sonuçlar almanızı sağlar.

order_by

SQLAlchemy ile sıralama işlemi yapmak için kullanabileceğiniz yöntemlerden biri de order_by fonksiyonudur. Bu fonksiyon, belirlediğiniz sütuna göre sıralama yapmanızı sağlar.

Örneğin, bir kullanıcılar tablosunu sıraya sokmak istediğinizi varsayalım. Bu tablodaki kullanıcıların yaşına göre sıraya koymak için

users = session.query(User).order_by(User.age) 

kullanabilirsiniz. Varsayılan olarak sıralama isteği, sütunun artan sıralamasına göredir. Ancak azalan sıralama yapmak için

users = session.query(User).order_by(User.age.desc())

şeklinde kullanabilirsiniz.

fonksiyonunu kullanabilirsiniz.

SQLAlchemy ile toplama, sayma ve ortalama alma işlemleri yapmak için func fonksiyonunu kullanabilirsiniz. Bu fonksiyon, SQL üzerindeki SUM, COUNT ve AVG ifadelerine karşılık gelir.

Örneğin, bir öğrenci tablosunda yer alan not sütununda yer alan verilerin ortalamasını almak için:

Not Öğrenci
80 Ahmet
90 Mehmet
70 Ali

Yukarıdaki örnekte, not sütununda yer alan verileri almak için select([table.columns.not]) ifadesi kullanılırken, ortalama alma işlemi için func.avg(table.columns.not) ifadesi kullanılabilir. Bu şekilde:

from sqlalchemy import select, funcquery = select([func.avg(table.columns.not)])

Bu ifade, SQL tarafında SELECT AVG(not) FROM öğrenciler olarak yorumlanacaktır.


Toplama, Sayma, Ortalama Alma

SQLAlchemy ile veri tabanı modelleme yaparken, toplama, sayma ve ortalama alma işlemleri gibi temel istatistiksel işlemler yapmanız gerekebilir. Bu işlemleri gerçekleştirmek için SQLAlchemy'de yer alan funcfonksiyonunu kullanabilirsiniz.

Örneğin, veri tabanındaki bir tablodan bir sütundaki değerlerin toplamını almak için session.query(func.sum(Table.Column)).scalar()işlemini kullanabilirsiniz. Aynı şekilde, ortalama alma işlemi için session.query(func.avg(Table.Column)).scalar()kodunu kullanabilirsiniz. Bu fonksiyonlar, toplam, sayı ve ortalama işlemlerinin yanı sıra çok sayıda matematiksel işlemi gerçekleştirmenize olanak tanır.

Bunun yanı sıra, SQLAlchemy ile bir sorgu sonucundaki değerleri gruplama ve sayma işlemleri de yapabilirsiniz. Bu işlemi gerçekleştirmek için group_byfonksiyonunu kullanabilirsiniz. Örneğin, aynı bir sütunun değerlerini gruplamak ve saymak için session.query(Table.Column, func.count(Table.Column)).group_by(Table.Column).all()işlemini kullanabilirsiniz.

SQLAlchemy'nin sunduğu bu temel istatistiksel işlemler sayesinde, veri tabanında yer alan verileri daha verimli bir şekilde analiz edebilirsiniz.

func

SQLAlchemy ile veri tabanı üzerinde toplama, sayma ve ortalama alma işlemleri yapmak oldukça kolaydır. Bunun için kullanabileceğiniz fonksiyonlar şunlardır:

  • func.sum: Belirtilen kolonun toplamını alır.
  • func.count: Belirtilen kolondaki verilerin sayısını verir.
  • func.avg: Belirtilen kolondaki verilerin ortalamasını alır.

Bu fonksiyonlar, SQLAlchemy'nin queryobjesi içinde kullanılabilecek fonksiyonlardır. filterveorder_byfonksiyonlarına benzer şekilde, queryüzerinde birkaç defa birleştirme işlemi yapılarak kullanılır.

from sqlalchemy import create_engine, funcfrom sqlalchemy.orm import Sessionengine = create_engine('postgresql://username:password@host:port/dbname')session = Session(engine)# Toplam kitap sayısıtotal_books = session.query(func.count(Book.id)).scalar()# Ortalama kitap sayfalarıavg_pages = session.query(func.avg(Book.pages)).scalar()# En az kitabı olan yazarleast_books_author = session.query(Author.name, func.count(Book.id)).\                       join(Book).\                       group_by(Author.id).\                       order_by(func.count(Book.id)).\                       limit(1).\                       scalar()

Bu örnek kodlarla, toplama, sayma ve ortalama alma fonksiyonlarını kullanarak veri tabanı üzerinde işlemler yapabilirsiniz. Kodları anlayarak değişiklik yaparak kendinizi geliştirebilir ve farklı projelerinizde de kullanabilirsiniz.

fonksiyonunu kullanabilirsiniz.

SQLAlchemy ile toplama, sayma ve ortalama alma işlemleri yapmak için func fonksiyonunu kullanabilirsiniz.

Bu fonksiyon, SQL'de kullanılan birçok işlevi destekler ve sorgulama işlemlerini kolaylaştırır.

  • sum: Bir sütundaki tüm değerlerin toplamını alır.
  • count: Bir sütundaki değerlerin sayısını verir.
  • avg: Bir sütundaki değerlerin ortalamasını verir.

Örneğin, bir veri tabanında bulunan müşterilerin siparişlerinin toplam tutarını hesaplamak için şu sorguyu yapabilirsiniz:

SorguSonuç
total = session.query(func.sum(Order.total_amount)).filter(Order.customer_id == 1).scalar()5000