0Pricing
Python Academy · Pelajaran

Mendefinisikan Model

Petakan kelas ke tabel

Mendefinisikan Model adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Model Dipetakan ke Tabel

Dalam ORM SQLAlchemy, sebuah model adalah kelas Python yang dipetakan ke tabel basis data. Setiap instans menjadi satu baris.

Model mewarisi dari kelas Base bersama.

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

__tablename__

Setiap model menetapkan __tablename__ untuk menamai tabelnya. SQLAlchemy menggunakan nama ini saat membuat SQL.

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__)

Kolom dengan Mapped

SQLAlchemy modern mendeklarasikan kolom dengan petunjuk tipe: Mapped[int] dan mapped_column(). Petunjuk tipe menetapkan tipe Python dan memberi informasi tentang tipe kolom.

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')

Kunci Utama

Tandai sebuah kolom sebagai kunci utama dengan primary_key=True. Kunci utama bilangan bulat secara bawaan akan dinaikkan secara otomatis.

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')

Kolom Opsional

Gunakan Mapped[str | None] atau Optional[str] untuk mengizinkan nilai NULL. Mapped[str] biasa berarti NOT NULL.

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')

Nilai Bawaan dan Keunikan

mapped_column() menerima opsi seperti unique=True dan default= untuk menambahkan batasan dan nilai cadangan.

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')

Panjang Teks

Untuk basis data yang memerlukannya, tetapkan panjang teks dengan mapped_column(String(50)).

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')

Membuat Skema

Base.metadata.create_all(engine) membuat tabel untuk setiap model yang mewarisi dari Base.

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')

Membuat Instans

Buat sebuah baris dengan membuat instans model seperti objek Python biasa, lalu teruskan nilai kolom sebagai argumen kata kunci.

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)

Menambahkan __repr__

__repr__ khusus memudahkan penelusuran kesalahan dengan menampilkan data objek secara jelas.

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')))

Model Tetap Berupa Python Biasa

Model tetap merupakan kelas biasa. Anda dapat menambahkan metode dan properti yang beroperasi pada datanya, sehingga perilaku dan penyimpanan dapat dipadukan.

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())

Pemeriksaan Cepat

Uji keterampilan Anda dalam mendefinisikan model.

Rangkuman

Anda telah mempelajari cara mendefinisikan model ORM.

  • Model mewarisi dari DeclarativeBase dan menetapkan __tablename__
  • Kolom menggunakan Mapped[type] dan mapped_column()
  • primary_key, unique, dan default menambahkan batasan
  • create_all() membuat tabel

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mendefinisikan Model” gratis?

Ya — teks lengkap “Mendefinisikan Model” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mendefinisikan Model”?

Petakan kelas ke tabel Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Mendefinisikan Model” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. SQLAlchemy Core vs ORM
  2. Mendefinisikan Model
  3. Membuat Kueri dengan Session
  4. Relasi dan Join
← Kembali ke Python Academy