در مطلب های پیشین تا اندازه ای در مورد SqlAlchemy و چگونگی خواندن جدول های یک پایگاه داده از پیش موجود صحبت کردیم. در این مطلب می خواهیم در مورد ایجاد یک جدول بوسیله ویژگی های SqlAlchemy صحبت کنیم. ایجاد جدول بوسیله SqlAlchemy بسیار ساده و مبتنی بر ویژگی های شی گرایی (Object Oriented) است. بنابراین درون SqlAlchemy یک جدول را می توانیم به صورت یک کلاس تعریف کنیم. گام های زیر چگونگی ایجاد جدول در SqlAlchemy را نشان می دهند.

۱ – ایجاد پایگاه داده درون پایگاه داده مربوطه. در MySQL و SQL Server از دستور CREATE DATABASE برای ایجاد جدول استفاده می شود. ما در این مطلب از پایگاه داده MySQL و پایگاه داده ای به نام webscraping استفاده می کنیم.

۲ – استفاده از تابع ()create_engine برای اتصال به پایگاه داده

۳ – ایجاد یک متغیر از نوع متد ()declarative_base

۴ – تعریف کلاس تعریف جدول که شامل تعریف ستون ها و نوع آنها می شود.

در کد شکل زیر نخست همه ماژول ها و تابع ها و کلاس های مورد نیاز برای ایجاد اتصال و تعریف جدول را به درون برنامه ضمیمه کرده ایم. در مطلب اتصال به پایگاه داده توسط SQLAlchemy در مورد تابع ()create_engine و رشته اتصال و سپس اتصال به پایگاه صحبت کرده ایم. در میان کلاس های ضمیمه شده، سه کلاس به نام Column و Integer و String ضمیمه شده اند. کلاس Column برای اعلان یک ستون و دو کلاس Integer و String برای اعلان نوع ستون استفاده می شوند.

پس از ایجاد اتصال، باید یک شی از نوع ()declarative_base ایجاد کنیم. در کدهای زیر ما متغیر را Base نامگذاری کرده ایم و سپس آن را به عنوان کلاس پدر (پایه) به کلاس User فرستاده ایم. به عبارتی کلاس User که تعریف جدول را شامل می شود، از کلاس پایه ای مشتق می شود که این کلاس پایه توسط متد ()declarative_base ایجاد و ساخته شده است.

در شکل بالا نخست یک کلاس به نام User ایجاد کرده ایم که از متغیر Base به عنوان کلاس پایه به ارث می برد. سپس یک خصوصیت به نام __tablename__ مقدار دهی شده است که نام جدول در پایگاه داده را تعیین می کند. به طور نمونه ما نام user را تعیین کرده ایم. سپس چهار خصوصیت از نوع کلاس Column به نام id و fname و lname و age تعریف شده است. پارامتر نخست متد سازنده کلاس Column نوع ستون را مشخص می کند که در کلاس بالا ستون ها از نوع Integer و String هستند. در تعریف نوع String، اندازه کاراکترها نیز مشخص شده است. توجه کنید نوع Integer به نوع INT و نوع String به نوع VARCHAR در MySQL نگاشت داده می شوند.

تابع سازنده کلاس Column پارامترهای دیگری را دریافت می کند. به طور نمونه اگر بخواهیم ستون به عنوان کلید اصلی باشد، پس باید پارامتر prmary_key برابر با True باشد. توجه کنید مقدار این پارامتر به صورت پیش فرض False است. برای اینکه ستون به صورت NOT NULL باشد، پارامتر nullable باید برابر با False باشد، به این معنی که ستون نمی تواند NULL باشد. توجه کنید مقدار پرامتر nullable به صورت پیش فرض True است، پس به صورت پیش فرض ستون ها اگر پارامتر nullable تعیین نشود (مانند ستون age) برابر با NULL خواهند بود. در پایان فرمان زیر برای ایجاد جدول در پایگاه داده اجرا شده است. توجه کنید متغیر engine برای مشخص کردن پایگاه داده هدف به متد ()create فرستاده شده است. شکل زیر نشان می دهد که جدول همنام با خصوصیت __tablename__ درون پایگاه داده ایجاد و سپس توسط دستور DESC user ساختار آن نشان داده شده است.

دانلود سورس برنامه مطلب SqlAlchemy Create Tabe