0Pricing
FastAPI Backend Development Bootcamp · Ders

SQLAlchemy ORM Temelleri

Veritabanı modelleri tanımlamak ve veritabanınızla etkileşim kurmak için SQLAlchemy'nin Nesne-İlişkisel Eşleyicisini (ORM) kullanmaya başlayın.

SQLAlchemy ORM Temelleri, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

Bridging Code and Databases

SQLAlchemy ORM'e hoş geldiniz! Python kodunuzu bir veritabanına güçlü ve nesne yönelimli bir şekilde nasıl bağlayacağınızı öğreneceksiniz.

Bir Nesne İlişkisel Eşleyici (ORM), ham SQL yazmak yerine programlama dilinizdeki nesneleri kullanarak bir veritabanıyla etkileşim kurmanıza yardımcı olan bir araçtır.

  • Veritabanı tablolarını Python sınıflarıyla eşler.
  • Veritabanı satırlarını Python nesneleriyle eşler.
  • Veritabanı sütunlarını Python öznitelikleriyle eşler.

Bu, veritabanı işlemlerinin normal Python nesneleriyle çalışıyormuş gibi hissettirmesini sağlar.

Meet SQLAlchemy: Your ORM Tool

SQLAlchemy, Python için kapsamlı ve güçlü bir ORM'dir. Verimli ve yüksek performanslı veritabanı erişimi için çok iyi bilinen kalıcılık modellerinden oluşan eksiksiz bir paket sunar.

Veritabanı yapınızı (şema) Python sınıflarını kullanarak tanımlamanıza ve bu sınıfların örneklerini kullanarak verilerle etkileşime girmenize olanak tanıyan ORM yeteneklerine odaklanacağız.

SQLite, PostgreSQL, MySQL ve daha fazlası dahil olmak üzere birçok veritabanını destekler!

The Foundation: Declarative Base

Veritabanı modellerimizi tanımlamaya başlamak için özel bir temel sınıfa ihtiyacımız var. SQLAlchemy'nin Bildirimsel Temel (Declarative Base) yapısı bu temeli sağlar.

Bu, temel olarak ORM modellerinizin miras alacağı bir temel sınıf oluşturan bir fabrikadır. Bu temel sınıf, Python sınıflarınızı altta yatan veritabanı tablolarına bağlar.

Bunu nasıl elde edeceğiniz aşağıdadır:

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

Defining Your First Model

Base nesneniz hazır olduğunda, veritabanı tablolarınızı Python sınıfları olarak tanımlayabilirsiniz. Her sınıf bir tabloyu, nitelikleri ise sütunları temsil edecektir.

Basit bir User modeli oluşturalım. Bu model bir id ve bir name alanına sahip olacak.

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(50))

Model Attributes: Columns

User modelimizde id ve name, Column nesneleri kullanılarak tanımlanmıştır. Column fonksiyonu, her bir veritabanı sütunuyla ilgili detayları belirtmenize olanak tanır:

  • Veri Tipi: Tam sayılar için Integer, metinler için String. SQLAlchemy'de çok daha fazlası mevcuttur!
  • Birincil Anahtar (Primary Key): primary_key=True, bir sütunu her satır için benzersiz tanımlayıcı olarak işaretler.
  • Uzunluk: String(50), metin alanları için maksimum uzunluğu belirler.
  • Boş Bırakılabilir (Nullable): Sütunlar varsayılan olarak boş bırakılabilir. Bir değer girilmesini zorunlu kılmak için nullable=False ayarını kullanabilirsiniz.

__tablename__ niteliği çok önemlidir; SQLAlchemy'ye veritabanınızdaki tablonun gerçek adını belirtir.

Setting Up the Database Engine

Tablo oluşturmadan veya veritabanı ile etkileşime geçmeden önce, SQLAlchemy'nin veritabanının nerede olduğunu bilmesi gerekir! İşte bu noktada Motor (Engine) devreye girer.

Bir Motor, herhangi bir SQLAlchemy uygulaması için başlangıç noktasıdır. Uygulamanızı bir bağlantı dizesi kullanarak belirli bir veritabanına bağlar.

Basitlik adına, test etmek için harika olan ve program sona erdiğinde kaybolan bellek içi (in-memory) bir SQLite veritabanı kullanacağız:

from sqlalchemy import create_engine

# Connect to an in-memory SQLite database
engine = create_engine('sqlite:///:memory:')

# For a file-based SQLite database:
# engine = create_engine('sqlite:///./test.db')

Creating Database Tables

Base yapımız, tanımlanmış modellerimiz ve engine'imiz ile artık asıl veritabanı tablolarını oluşturabiliriz!

Base.metadata.create_all(engine) metodu, Base sınıfından türetilen tüm sınıfları inceler ve engine tarafından bağlanan veritabanında ilgili tabloları oluşturur.

Tablolar zaten mevcutsa, SQLAlchemy hataları önlemek adına onları yeniden oluşturmaya çalışmayacaktır.

Full Example: Define & Create

Hepsini bir araya getirelim! Bir modeli nasıl tanımlayacağınızı ve bellek içi bir SQLite veritabanında tablosunu nasıl oluşturacağınızı görmek için bu kodu çalıştırın.

Gerekli olan her şeyi nasıl içe aktardığımıza, Base'i nasıl tanımladığımıza, User modelimizi nasıl oluşturduğumuza, engine'i nasıl ayarladığımıza ve son olarak tabloları nasıl oluşturduğumuza dikkat edin.

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

# 1. Define the Base for ORM models
Base = declarative_base()

# 2. Define a Model (e.g., User table)
class User(Base):
    __tablename__ = 'users' # The actual table name in the database
    id = Column(Integer, primary_key=True) # Unique ID, automatically managed
    name = Column(String(50), nullable=False) # User's name, max 50 chars, required

    # A helpful representation for printing User objects
    def __repr__(self):
        return f"<User(id={self.id}, name='{self.name}')>"

# 3. Create a database engine
# Using an in-memory SQLite database for simplicity
engine = create_engine('sqlite:///:memory:')

# 4. Create all tables defined in Base
Base.metadata.create_all(engine)

print("Database tables created successfully!")
print("The 'users' table is now ready for data.")

Your Database Interaction Hub: The Session

Modelleri tanımlamak ve tabloları oluşturmak sadece ilk adımlardır. Verilerle gerçekten etkileşime geçmek (ekleme, sorgulama, güncelleme, silme) için bir Session (Oturum) nesnesine ihtiyacınız vardır.

Bir Session, veritabanı işlemleriniz için geçici bir çalışma alanı gibidir. Yüklediğiniz veya oluşturduğunuz tüm nesneleri tutar ve değişiklikleri takip eder.

Bir Session'ı sessionmaker kullanarak oluşturur ve engine nesnenize bağlarsınız:

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine

# (Assume 'engine' is already created as shown before)
engine = create_engine('sqlite:///:memory:')

# Create a Session factory
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# To get a session:
# db = SessionLocal()
# try:
#     # Perform operations with db
#     pass
# finally:
#     db.close()

Quick Check: Model Setup

SQLAlchemy ORM'in temel kurulumunu yapmayı öğrendiniz. Temel bileşenlere dair anlayışınızı test edelim.

Recap: SQLAlchemy ORM Basics

Harika bir iş çıkardın! SQLAlchemy ORM dünyasına ilk adımlarını attın.

İşte ele aldığımız konular:

  • ORM nedir: Python nesnelerini veritabanı tablolarıyla eşler.
  • SQLAlchemy: Güçlü bir Python ORM'i.
  • Declarative Base: Modelleriniz için temel yapı (Base = declarative_base()).
  • Modelleri Tanımlama: Base sınıfından miras alan Python sınıfları (User gibi) oluşturma.
  • Sütunlar: Veri türleri (Integer, String) ve öznitelikler (primary_key) ile Column kullanımı.
  • Engine: Veritabanınıza bağlanma (create_engine).
  • Tablo Oluşturma: Modelleri veritabanında hayata geçirme (Base.metadata.create_all(engine)).
  • Session: Veritabanı etkileşimleri için çalışma alanınız (sessionmaker).

Bir sonraki adımda, bu kavramları kullanarak verileri nasıl ekleyeceğimizi, sorgulayacağımızı, güncelleyeceğimizi ve sileceğimizi öğreneceğiz!

Sıkça Sorulan Sorular

“SQLAlchemy ORM Temelleri” dersi ücretsiz mi?

Evet — “SQLAlchemy ORM Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

“SQLAlchemy ORM Temelleri” dersinde ne öğreneceğim?

Veritabanı modelleri tanımlamak ve veritabanınızla etkileşim kurmak için SQLAlchemy'nin Nesne-İlişkisel Eşleyicisini (ORM) kullanmaya başlayın. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“SQLAlchemy ORM Temelleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. SQLAlchemy ORM Temelleri
  2. FastAPI'yi PostgreSQL'e Bağlama
  3. SQLAlchemy ile CRUD İşlemleri
  4. Alembic ile Veritabanı Geçişleri
← FastAPI Backend Development Bootcamp Sayfasına Dön