در SQLAlchemy، «جدول» یا Table اصلیترین ساختار برای نمایش دادهها در دیتابیس است. هر جدول نماینده یک موجودیت (Entity) در سیستم است و مجموعهای از رکوردها را نگهداری میکند. جدول در واقع شِمای کلی ذخیرهسازی داده را مشخص میکند، اما بدون اشاره مستقیم به فیلدها، میتوان مفهوم آن را در قالب نقش و رفتار کلی توضیح داد.
جداول در SQLAlchemy چه هستند؟
جدولها ساختارهای منطقی هستند که SQLAlchemy برای تعریف، مدیریت و تعامل با دیتابیس از آنها استفاده میکند. چه در SQLAlchemy Core و چه در ORM، جدولها پایهٔ اصلی مدلسازی داده به حساب میآیند. هر جدول نشاندهنده یک بخش از سیستم است؛ مثلاً کاربران، سفارشها یا محصولات.
ویژگیهای کلی جداول در SQLAlchemy (بدون اشاره به فیلدها):
- نمایشدهنده یک موجودیت یا بخش مستقل از سیستم هستند.
- شامل مجموعهای از رکوردها (سطرها) میشوند.
- در دیتابیس فیزیکی به عنوان یک ساختار واقعی ذخیره میشوند.
- میتوانند با جدولهای دیگر ارتباط داشته باشند (مثل یکبهچند یا چندبهچند).
- قابل مدیریت از طریق SQLAlchemy هستند؛ شامل ایجاد، حذف، و بهروزرسانی.
- در ORM، هر جدول توسط یک کلاس پایتونی نمایندگی میشود.
- در Core، جدول به صورت مستقیم از طریق شیء Table تعریف و مدیریت میشود.
- SQLAlchemy جداول را در قالب مدل مفهومی (ORM) یا مدل ساختیافته نزدیک به SQL (Core) پیادهسازی میکند.
دو روش اصلی تعریف جدولها:
- ORM: هر کلاس یک جدول را معرفی میکند.
- Core: جدول با ایجاد یک آبجکت Table تعریف میشود.
نمونهنمایی ساده مفهومی:
# ORM: A table represented by a Python class
class User(Base):
__tablename__ = "users"
# Core: A table represented by a Table object
users = Table("users", metadata)
به طور خلاصه، جدولها در SQLAlchemy نقش ستونفقرات ساختار دیتابیس را دارند و فارغ از فیلدها، مسئول تعریف موجودیتها، ارتباطات و معماری کلی ذخیرهسازی داده هستند.
در SQLAlchemy، مفهوم Base به عنوان نقطهٔ شروع تعریف مدلهای ORM استفاده میشود. وقتی از ORM استفاده میکنید، هر مدل شما باید از یک کلاس پایه ارثبری کند تا SQLAlchemy بتواند آن را بهعنوان یک جدول شناسایی و مدیریت کند. این کلاس پایه معمولاً با استفاده از تابع declarative_base() ساخته میشود.
به عبارت ساده، Base ستون اصلی سیستم ORM در SQLAlchemy است که همه مدلها روی آن ساخته میشوند. این کلاس اطلاعات مشترک میان تمام مدلها را نگه میدارد و امکان ثبت و مدیریت جداول را فراهم میکند.
نقش Base چیست؟
- به SQLAlchemy میگوید کدام کلاسها باید به جدول تبدیل شوند.
- همهٔ مدلها را در یک ساختار واحد ثبت و مدیریت میکند.
- مسئول تولید متادیتا (MetaData) برای ایجاد جداول است.
- پایهٔ ارثبری برای تمام کلاسهای ORM محسوب میشود.
نمونه ساده تعریف Base:
from sqlalchemy.orm import declarative_base
Base = declarative_base()
بعد از ساخت Base، هر مدل با ارثبری از آن تبدیل به یک جدول میشود. برای مثال:
class User(Base):
__tablename__ = "users"
به طور خلاصه، Base همان نقطهٔ مرکزی و اصلی برای ساخت و مدیریت تمام مدلهای ORM است و بدون آن SQLAlchemy نمیتواند مدلها را به جدول تبدیل کند.