آموزش جنگو (Basic) : جلسه سه | مفهوم دیتابیس و ORM

در این جلسه با هم مفهوم دیتابیس ها و مفهوم ORM را در جنگو درک خواهیم کرد . با ما همراه باشید . آموزش جنگو : جلسه سه | مفهوم دیتابیس و ORMدیتابیس (DATABASE) چیست ؟قبل از بررسی مدل ها در جنگو و نحوه ذخیره اطلاعات در آنها بیایید تا کمی بیشتر با دیتابیس ها آشنا شویم .فرض کنید که با دوستان‌ خود در یک مهمانی هستید و میخواهید از یک فست فود، غذا سفارش دهید! معمولا چه کاری انجام میدهید ؟‌ یا به سراغ اپلیکیشن های سفارش آنلاین غذا میروید، و یا بروشورهای تبلیغاتی فست فود ها می آورید و از حاضران میخواهید که غذای مورد نظرشان را انتخاب کنند.در واقع در این مثال، شما لیستی از فست فود هایی دارید که اطلاعاتی مثل اسم غذاها، قیمت آن‌ها و … در آن لیست درج شده است.در این حالت میتوانیم به مجموعه بروشورهای تبلیغاتی شما، یک پایگاه داده یا Database از فست فود های اطرافتان بگوییم . در واقع محل ذخیره اطلاعات را دیتابیس می گویند . در اینجا اطلاعات یک لیست از غذاها است .یکی از اصلی ترین جاهایی که پایگاه داده یا Database ها به کار میروند، نرم افزارها و وبسایت ها هستند.میتوانیم بگوییم تقریبا تمام نرم افزارها، بوسیله‌ی پایگاه داده یا Database قدرت واقعی خود را پیدا میکنند و بدون آن هیچ کار خاصی نمیتوانند انجام دهند. برای مثال : نرم افزار اسنپ، حاوی یک دیتابیس از راننده ها می‌باشد یا وبسایت دیجی کالا، حاوی دیتابیس عظیمی از کالاهای موجود در انبار آنها است .جدول (TABLE) چیست ؟هر پایگاه داده یا Database میتواند شامل چندین جدول مختلف باشد. برای مثال فرض کنید که میخواهید یک وبسایت برای خودتان بسازید . این وبسایت یک پایگاه داده باید داشته باشد که اسم آ‌ن‌ را myDatabase میگذاریم (هرچیزی برای نام دیتابیس می تواند به کار برود) .این دیتابیس که مخصوص به سایت شماست ، باید چندین جدول متفاوت داشته باشد . برای مثال:جدولی برای کاربران سایتجدولی برای مطالب ارسالی در سایتجدولی برای محصولات سایتجدولی برای نظرات کاربرانجدولی برای ثبت سفارشاتکاربرد ایجاد جدول در آن است که اطلاعات شما طبقه بندی و دسته دسته می شوند . تمام این جدول ها، در دیتابیس و پایگاه داده اصلی شما که آن‌ را MyDatabase نامگذاری کردید، قرار میگیرد. اینگونه یک دیتابیس، میتواند حاوی چندین جدول یا Table مختلف باشد .ستون (COLUMN) چیست ؟هر جدول در دیتابیس، دارای ستون های مختلفی است. بیایید با هم همان مثال بالا را بررسی کنیم. یکی از جداول، مثل جدول محصولات سایت را انتخاب میکنیم. این جدول میتواند حاوی ستون های زیر باشد:ستون نام محصولاتستون تاریخ انتشار محصولاتستون تعداد خریداران محصولاتستون قیمت محصولاتستون دسته بندی محصولاتپس هر جدول، برای نگه داری محتویات مختلف خود، نیاز به ستون های مختلفی دارد .سطر (ROW) چیست ؟در یک دیتابیس یا پایگاه داده، به هر عنوانی که وارد یک جدول میشود , یک سطر میگوییم . در واقع هر رکورد در دیتابیس (در مثال غذاها , رکورد تک تک غذاهای لیست بود , در واقع هر آیتم در دیتابیس یک رکورد است) , به صورت مجموعه ای که باشد یک سطر را پر می کند . فیلد (FIELD) چیست ؟هر خانه از ستون دیتابیس با نام فیلد شناخته میشود و میتواند انواع مختلفی ماند عدد یا رشته را ذخیره کند .اگر بخواهیم مفاهیم بالا را بسیار عالی و در یک عکس توضیح دهیم، عکس زیر بهترین توضیح میباشد :پارت های یک دیتابیس چگونه میتوان با یک دیتابیس ارتباط برقرار کرد ؟دیتابیس ها نیز مانند زبان های برنامه نویسی یک زبان مخصوص برای ارتباط با خود دارند . این زبان دستورات فراوانی دارد که به شما کمک میکند تا اطلاعات خود را دیتابیس مرتب کنید و به راحتی به آنها دسترسی پیدا کنید. برای مثال کد زیر به دیتابیس میگوید تا از جدول user و ستون username , تمام یوزرها یا کاربران را پیدا کند و سپس آن ها را به شما نمایش دهد .SELECT username FROM userمعجزه جنگو !یکی از شعارهای جنگو کمترین کد با بیشترین کارایی است . اگر شما بخواهید زبان دیتابیس ها را (Sql) یاد بگیرید و برای ساخت وبسایت خود کلی از دستورات آنها را مرتب و استفاده کنید , زمان زیادی خواهد برد . همچنین کد شما ممکن است پر از ایراد های کوچک و بزرگ باشد .اینجاست که جنگو مانند ابرقهرمان ها وارد میدان خواهد شد و به شما هدیه ای به نام ORM را خواهد داد !مفهوم ORMبصورت ساده ORM یا Object Relational Mapping در واقع یک عملکرد است که برای ارتباط برقرار کردن با دیتابیس بکار می رود و تا زمانی که از دیتابیس‌های قابل پشتیبانی آن استفاده کنید، شما را از نوشتن کدهای SQL بی نیاز می‌کند . در واقع شما به آن می گویید چکار کند و خودش کد SQL مناسب را تولید و اجرا می کند .هدف ORM این است که با استفاده از زبان برنامه‌نویسی مورد نظرتان و با کمک گرفتن از قدرت شئ‌گرایی, جداول و ستون‌های مربوط به بانک اطلاعاتی‌تان را توسعه دهید.در واقع هر آنچه که شما در شئ‌گرا با آن سر و کار دارید می‌تواند به اصطلاحات مربوط به دنیای دیتابیس‌ها تبدیل شود. برای مثال زمانی که شما یک کلاس (مدل) جدید ایجاد می‌کنید در بانک اطلاعاتی‌تان یک جدول درست خواهد شد. هر موقع یک خاصیت را تعریف می‌کنید، یک ستون جدید به جداول‌تان اضافه خواهد شد.یکی از اهداف ORM این است که شما را از پیچیدگی بسیار زیادی نوشتن کوئری با استفاده از زبان SQL دور نگه داشته و به روش منطقی‌ و ساده‌تری دیتابیس‌تان را توسعه دهید.مفهوم ORM در جنگوشی گرایی پایتون و ORM و مدل هاحال فرض کنید وبلاگی دارید . هر پست در وبلاگ شما دارای مشخصات خاصی مانند سرتیتر , متن اصلی ,زمان انتشار است .این وبلاگ دارای یک دیتابیس است و به بخش پست ها , جدول (TABLE) گفته میشود . اما در ORM هر جدول در واقع یک کلاس است . پس برای ایجاد یک جدول میتوان یک کلاس در پایتون ایجاد کرد . به این نوع از کلاس ها مدل گفته می شود .هر پست در وبلاگ به عنوان یک شی شناخته میشود که ویژگی های کلاس را درون خود جای داده است . به مثالی که با هم در جلسه بعدی انجام خواهیم داد دقت کنید تا بهتر متوجه شوید .دیتابیس جنگودیتابیسی که در جنگو و این کتاب مورد استفاده قرار خواهد گرفت Sqlite میباشد . یک دیتابیس بسیار سبک که درون خود پایتون نصب شده است و جنگو بصورت پیش فرض از آن استفاده میکند .علاوه بر sqlite جنگو از دیتابیس های دیگر نیز مانند postgreSql و یا MySql نیز پشتیبانی میکند و شما برای کار با آنها فقط تنظمات جنگو را تغییر میدهید و نیاز به حفظ یا یادگیری آنها نخواهید داشت .این معجزه ORM و بک اند دیتابیس های جنگو است .در بخش های دیگر خواهید دید که Sqlite در کدام بخش از جنگو قرار گرفته است و چگونه کار میکند .در این مقاله با مفهوم دیتابیس ها و ORM در جنگو آشنا شدید . در قسمت بعدی کار با دیتابیس ها در جنگو را آغاز می کنیم .