ORM جنگو چیست؟ + ویژگی های Django ORM
ساخت یک وب سایت یا اپلیکیشن بدون استفاده از ابزارهای مناسب، میتواند زمان بر و پیچیده باشد. جنگو (Django) یک فریمورک قدرتمند و متن باز پایتون است که با فراهم کردن ابزارها و ماژولهای آماده، به توسعه دهندگان اجازه میدهد برنامههای تحت وب را سریعتر، امنتر و با خطای کمتر بسازند. در این مقاله، با جنگو و بخش مهم آن یعنی ORM (Object-Relational Mapper) آشنا میشویم و خواهید دید چگونه میتوان به سادگی با پایگاه دادهها کار کرد و برنامههای حرفهای طراحی نمود.
جنگو (Django) چیست؟
جنگو یک نرم افزار است که برای توسعه بهینهتر و بهتر برنامههای تحت وب از آن استفاده میشود. در اکثر اپلیکیشنها و وب سایتها، قابلیتهایی وجود دارد که مشترک هستند و یک عملیات را انجام میدهند؛ برای مثال مدیریت کوکیها، بازیابی اطلاعات و… . کدنویسی این فرایندها برای توسعه دهندگان به صورت چند باره زمان بر است. Django مجموعه بزرگی از ماژولهای قابل استفاده دارد که در آنها این عملکردها و کدها دسته بندی شدهاند و میتوان از آنها برای توسعه وب اپلیکیشنها استفاده کرد.
تاریخچه Django
تاریخچه و مسیر ارائه رشد و پیشرفت ORM جنگو به شرح زیر است.
مسیر آغاز توسعه جنگو به سال 2003 برمیگردد. جنگو در ابتدا به عنوان ابزاری برای مدیریت محتوای وب سایت به حساب میآمد. در این مسیر توسعه دهندگان همواره به دنبال راهکارهایی بودند تا بتوانند به آسانی با پایگاه داده در تعامل باشند. جنگو در سال 2005 به عنوان یک پروژه منبع باز منتشر شد. یکی از ویژگیهای مهم و کلیدی آن داشتن ORM بود که این امکان را برای کاربران فراهم میآورد تا بتوانند مدلهای داده را به شکل کلاسهای پایتون تعریف و به وسیله آن به آسانی با پایگاه داده در تعامل باشند.
ORM جنگو این امکان را برای توسعهدهندگان فراهم میآورد تا بدون نیاز به نوشتن SQL، عملیات CRUD (ایجاد، خواندن، به روز رسانی و حذف) را انجام دهند. با گذشت زمان مسیر توسعه و بهبود طی شد. یکی از این توسعهها و به روز رسانیها این امکان را برای توسعه دهندگان فراهم میآورد تا تغییرات در مدلهای دادهای خود را به طور خودکار در پایگاه داده اعمال کنند
ORM چیست؟
ORM مخفف عبارت (Object-Relational Mapper) میباشد و یک تکنولوژی است که این امکان را برای برنامه نویسان فراهم میآورد تا بتوانند با پایگاه دادهها به روش شی گرا کار نمایند. در این تکنولوژی دادهها به اشیا در زبان برنامه نویسی تبدیل میشوند و برعکس. این امر باعث میشود تا نحوه تعامل با پایگاه داده آسانتر شده و در کنار آن نیاز به نوشتن کدهای SQL کاهش یابد.
حالا که با قدرت Django ORM آشنا شدید، زمان آن رسیده که پروژه خود را روی یک سرور واقعی، سریع و بدون دردسر اجرا کنید!
سرور مجازی مدیریت شده پویان آی تی با هارد NVMe، کانفیگ آماده وب سرور (Nginx/Apache + Python + Django)، امنیت بالا و پشتیبانی تخصصی ۲۴ ساعته دقیقا همان چیزی است که نیاز دارید.
مزایای ORM
بهره گیری از این تکنولوژی مزایای زیادی را برای افراد به همراه میآورد. برخی از این مزایا به شرح زیر هستند.
- سازگاری با پایگاه دادههای مختلف: ORM این امکان را برای افراد فراهم میآورد تا بتوانند به صورت هم زمان از چندین پایگاه داده استفاده نمایند و تغییر در پایگاه داده نیازی به تغییرات عمده در کد نویسی نداشته باشد.
- بهبود بهره وری: از آنجا که ORM نیاز به نوشتن کدهای SQL را تا حد زیادی کاهش میدهد توسعه دهندگان میتوانند با سرعت بالاتر و در عین حال خطای کمتری به برنامه نویسی بپردازند.
- نگهداری آسان: از آنجا که با استفاده از تکنولوژی ORM کدها شی گرا هستند به تبع خوانایی و نگهداری از آنها آسانتر از کدهای SQL است.
- ایمنی بالا: استفاده از ORM از بسیاری از حملات SQL Injection جلوگیری میکند.
معایب ORM
در کنار همه مزایایی که ORM دارد، معایبی هم دارد.
1. کارایی ORM: در نهایت کدهای نوشته شده باید به زبان SQL تبدیل شوند و این موضوع باعث کند شدن عملیاتهای بانک اطلاعاتی میشوند.
2. تفاوت در ORMها: استاندارد و قوانین یکپارچهای برای ORM قرار گرفته نشده است. از این رو کتابخانههای ORM با هم متفاوت بود و طرز کار خود را دارند.
3. دقت ORM: دقت ORM کمی پایین است و در مواجه با کوئریهای پیچیده خروجیهای اشتباهی تولید میکند.
آشنایی با Django ORM
یکی از ویژگیهای اصلی و بسیار مهم این فریمورک، این است که به توسعه دهندگان اجازه میدهد به صورت شی گرا با پایگاه دادههای رابطهای کار کنند. این روش به جای نوشتن مستقیم دستورات SQL، از کلاسها و اشیا پایتون برای تعامل با پایگاه داده استفاده میکند.
در اینجا به توضیح درباره چند مفهوم کلیدی برای درک هنگام کار با ORM جنگو میپردازیم.
- مدلها که شامل کلاسهای پایتون هستند و جدولهای پایگاه داده را نشان میدهند.
- فیلدها که به تعریف نوع دادهها میپردازند و انواع مختلفی دارند. از جمله فیلدهایی که جنگو ارائه میدهد میتوان به IntegerField ،CharField DateField و غیره اشاره کرد.
- کوئری ستها که در راستای جستجو از پایگاه داده برای دادهها استفاده میشوند.
- مدیران که نحوه بازیابی دادهها را از یک مدل تعریف میکنند. هر مدل دارای یک مدیر پیش فرض است، اما میتوانید مدیران سفارشی را برای فیلتر کردن یا اصلاح مجموعههای کوئری تعریف کنید.
- فراهم کردن انواع مختلف روابط بین مدلها که به شما اجازه میدهد تا نحوه ارتباط مدلها با یکدیگر را تعریف کنید.
- Migrations، فایلهایی هستند که تغییرات طرح واره پایگاه داده را توصیف و میتوانند آن تغییرات را در پایگاه داده اعمال کنند.
ویژگیهای ORM جنگو
ORM، از جمله بخشهای مهم و کلیدی این فریمورک به حساب میآید که به شما اجازه میدهد تا با پایگاه دادههای دیگر تعامل داشته باشید. از جمله ویژگیهای کلیدی ORM جنگو، میتوان به موارد زیر اشاره کرد.
امنیت بالا
شما با بهره گیری از ORM از بسیاری از دغدغهها و مشکلات امنیتی در امان خواهید بود؛ چرا که تمامی دادهها با استفاده از این تکنولوژی به شکلی ایمن به پایگاه داده ارسال میشوند.
عملیات CRUD
پشتیبانی از مواردی مثل ایجاد (Create)، خواندن (Read)، به روز رسانی (Update) و حذف (Delete) میپردازد. این امر میتواند به آسانی و با استفاده از متدهای مناسب صورت پذیرد.
کار با کوئریها
فراهم آوردن امکان ساخت و اجرای کوئریها به شکل شی گرا و با بهره گیری از APIهای قدرتمند. این امر باعث میشود تا کدها خواناتر و نگهداری از آنها آسانتر گردد.
پشتیبانی از انواع روابط بین مدلها
روابط به چندین دسته تقسیم میشوند که جنگو ORM از انواع آنها پشتیبانی میکند. دسته بندی روابط به شرح زیر است.
- روابط یک به چند: این امکان را فراهم میآورد تا یک شی با چندین شی دیگر در ارتباط باشد.
- چند به چند: از این رابطه در راستای تعریف روابط پیچیده میان جداول کاربرد دارد.
- یک به یک: رابطه یک به یک میان دو شی را نشان میدهد.
این ویژگیها باعث میشوند که جنگو ORM ابزاری قدرتمند و کارا برای توسعه برنامههای مبتنی بر پایگاه داده باشد و به توسعه دهندگان کمک کند تا به صورت موثرتر و با خطای کمتر کدهای خود را بنویسند و مدیریت کنند.
راه اندازی Django ORM
در راستای راه اندازی Django ORM شما بایستی مسیر زیر را طی نمایید.
- در نخستین مرحله بایستی جنگو را نصب نمایید. شما میتوانید جنگو را با استفاده از pip نصب کنید.
- بعد از نصب جنگو با اجرای دستور django-admin startproject name project قادر خواهید بود تا یک پروژه جدید ایجاد و نام پروژه خود را در قسمت name project قرار دهید.
- در راستای ایجاد یک برنامه جنگو شما بایستی وارد دایرکتوری اصلی پروژه خود شوید و دستور python manager.py startapp name app را اجرا نمایید. (نام برنامه را میتوانید با name app عوض کنید.) نکته: پروژه جنگو می تواند شامل چندین برنامه باشد که هر کدام هدف خاصی را دنبال می کنند.
- از آنجا که مدلها ساختار جداول پایگاه داده شما را تعریف میکنند بایستی مدلهای خود را تعریف کنید.
- بعد از تعریف مدلها، بایستی جدولهای پایگاه داده را ایجاد کنید. شما با اجرای دستور python manager.py makemigrations قادر خواهید بود تا فایلهای مهاجرت را بر اساس تغییراتی که در مدلهای خود ایجاد کردهاید ایجاد نمایید.
- پس از راه اندازی پایگاه داده شما، میتوانید از ORM جنگو برای انجام عملیات پایگاه داده استفاده کنید.
در آخر
ORM جنگو عبارت است از یک تکنولوژی و ابزار قدرتمند که از آن در راستای تعامل با دیتابیسها در فریمورک جنگو استفاده میشود. شما به عنوان یک توسعه دهنده با استفاده از ORM قادر خواهید بود تا بدون نیاز به نوشتن کدهای SQL دادههای خود را در دیتابیس مدیریت نمایید. Django ORM به پشتیبانی از طیف گستردهای از backendهای پایگاه داده، از جمله MySQL ،PostgreSQL ،SQLite و Oracle پشتیبانی میکند و با تغییر نیازمندیهای پروژه، جا به جایی بین پایگاههای داده مختلف را آسان میکند. استفاده از این تکنولوژی به توسعه دهندگان اجازه میدهد کدهای تمیزتر و قابل نگهداری تری بنویسند که آزمایش و اشکال زدایی آسانتر است.
سوالات متداول
شما با استفاده از ORM در جنگو قادر خواهید بود تا تعامل با پایگاه داده را سهولت بخشید و با استفاده از دادهها به جای نوشتن کوئریهای SQL سطح خوانایی و همین طور تغییر کدها را بهبود بخشید.
بله، با استفاده از متد `raw()` میتوانید کوئری را مستقیما اجرا کرده و نتیجه را به صورت شی پایتونی دریافت کنید.
منابع
- https://aws.amazon.com/what-is/django/
به این مقاله امتیاز دهید!
میانگین امتیاز 3 / 5. تعداد رأی ها : 2
هنوز هیچ رأیی داده نشده. اولین نفر باشید!



اولین دیدگاه را اضافه کنید.