0Pricing
Python Academy · Ders

Modelleri Tanımlama

Sınıfları tablolara eşleyin

Modelleri Tanımlama, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 2. 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, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Modeller Tablolara Eşlenir

SQLAlchemy ORM'de model, bir veritabanı tablosuna eşlenen bir Python sınıfıdır. Her örnek bir satıra dönüşür.

Modeller ortak bir Base sınıfından miras alır.

from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
    pass
print('Base class ready')

__tablename__

Her model, tablosunu adlandırmak için __tablename__ değerini ayarlar. SQLAlchemy, SQL oluştururken bu değeri kullanır.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
print(User.__tablename__)

Mapped ile Sütunlar

Modern SQLAlchemy, sütunları tür ipuçlarıyla bildirir: Mapped[int] ve mapped_column(). Tür ipucu, Python türünü belirler ve sütun türü hakkında bilgi verir.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
    age: Mapped[int]
print('User has id, name, age')

Birincil Anahtar

Bir sütunu birincil anahtar olarak işaretlemek için primary_key=True kullanın. Tamsayı birincil anahtarlar varsayılan olarak otomatik artırılır.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class Product(Base):
    __tablename__ = 'products'
    id: Mapped[int] = mapped_column(primary_key=True)
    title: Mapped[str]
print('id is the primary key')

İsteğe Bağlı Sütunlar

Mapped[str | None] veya Optional[str] kullanarak NULL değerlerine izin verin. Düz bir Mapped[str] NOT NULL anlamına gelir.

from typing import Optional
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    nickname: Mapped[Optional[str]]
print('nickname can be NULL')

Varsayılanlar ve Benzersizlik

mapped_column(), kısıtlamalar ve yedek değerler eklemek için unique=True ve default= gibi seçenekler alır.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    email: Mapped[str] = mapped_column(unique=True)
    active: Mapped[bool] = mapped_column(default=True)
print('email is unique, active defaults to True')

Dize Uzunluğu

Gerektiren veritabanları için dize uzunluğunu mapped_column(String(50)) ile ayarlayın.

from sqlalchemy import String
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str] = mapped_column(String(50))
print('name limited to 50 chars')

Şemayı Oluşturma

Base.metadata.create_all(engine), Base sınıfından miras alan her model için tablolar oluşturur.

from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
print('Schema created')

Örnekler Oluşturma

Bir modeli normal bir Python nesnesi gibi örneklendirerek ve sütun değerlerini anahtar sözcüğü bağımsız değişkenleri olarak vererek bir satır oluşturun.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
u = User(name='Alice')
print(u.name)

__repr__ Ekleme

Özel bir __repr__, nesnenin verilerini açıkça göstererek hata ayıklamayı kolaylaştırır.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
    def __repr__(self):
        return 'User(name=' + self.name + ')'
print(repr(User(name='Bob')))

Modeller Sade Python Olarak Kalır

Model hâlâ sıradan bir sınıftır. Verileri üzerinde çalışan yöntemler ve özellikler ekleyebilir, davranış ile kalıcılığı bir arada kullanabilirsiniz.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
    def greet(self):
        return 'Hi, ' + self.name
print(User(name='Carol').greet())

Hızlı Kontrol

Model tanımlama becerilerinizi sınayın.

Özet

ORM modelleri tanımlamayı öğrendiniz.

  • Modeller bir DeclarativeBase sınıfından miras alır ve __tablename__ değerini ayarlar
  • Sütunlarda Mapped[type] ve mapped_column() kullanılır
  • primary_key, unique ve default kısıtlamalar ekler
  • create_all() tabloları oluşturur

Sıkça Sorulan Sorular

“Modelleri Tanımlama” dersi ücretsiz mi?

Evet — “Modelleri Tanımlama” 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 Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Modelleri Tanımlama” dersinde ne öğreneceğim?

Sınıfları tablolara eşleyin Python Academy 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.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, 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 2. dersidir.

“Modelleri Tanımlama” 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 Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy 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 Core ve ORM Karşılaştırması
  2. Modelleri Tanımlama
  3. Session ile Sorgulama
  4. İlişkiler ve Birleştirmeler
← Python Academy Sayfasına Dön