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
DeclarativeBasedan menetapkan__tablename__ - Kolom menggunakan
Mapped[type]danmapped_column() primary_key,unique, dandefaultmenambahkan batasancreate_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
- SQLAlchemy Core vs ORM
- Mendefinisikan Model
- Membuat Kueri dengan Session
- Relasi dan Join