L o a d i n g
کوئری‌ها در جنگو جنگو

کوئری‌ها در جنگو

جنگو (Django) یکی از فریمورک‌های وب محبوب برای زبان برنامه‌نویسی پایتون است که توسعه‌دهندگان را قادر می‌سازد تا به سرعت برنامه‌های وب قدرتمند و امن ایجاد کنند. یکی از ویژگی‌های کلیدی جنگو، سیستم ORM (Object-Relational Mapping) آن است که امکان تعامل با پایگاه‌های داده را به شکلی ساده و موثر فراهم می‌کند. در این مقاله، به بررسی مختصر کوئری‌ها در جنگو خواهیم پرداخت. 

مدل ها و جنگو ORM

در جنگو، مدل‌ها (Models) کلاس‌هایی هستند که ساختار و رفتار داده‌ها را تعریف می‌کنند. هر مدل به یک جدول در پایگاه داده نگاشت می‌شود و ستون‌های جدول به عنوان فیلدهای مدل تعریف می‌شوند. برای مثال:

 

from django.db import models 
class Book(models.Model):
	title = models.CharField(max_length=100)
  	author = models.CharField(max_length=100)
 	published_date = models.DateField()

در اینجا، کلاس Book به جدول book در پایگاه داده نگاشت می‌شود و هر فیلد آن به یک ستون در جدول مربوطه.

ایجاد کوئری‌ها

برای ایجاد کوئری‌ها و بازیابی داده‌ها از پایگاه داده، از متدهای مختلفی که توسط جنگو ارائه می‌شوند استفاده می‌کنیم. برخی از این متدها عبارتند از:

 

  • all(): تمام رکوردهای جدول را بازمی‌گرداند.
  • filter(): رکوردهایی که با شرط خاصی مطابقت دارند را بازمی‌گرداند.
  • exclude(): رکوردهایی که با شرط خاصی مطابقت ندارند را بازمی‌گرداند.
  • get(): یک رکورد که با شرط خاصی مطابقت دارد را بازمی‌گرداند.
  • order_by(): رکوردها را بر اساس فیلد خاصی مرتب می‌کند.

مثال‌هایی از کوئری‌ها

  1. بازیابی تمام رکوردها:
books = Book.objects.all()
  1. فیلتر کردن رکوردها:

 

python_books = Book.objects.filter(title__icontains='python')
  1. استفاده از چندین شرط:
recent_books = Book.objects.filter(published_date__year=2023).order_by('-published_date')
  1. بازیابی یک رکورد خاص:
try: specific_book = Book.objects.get(id=1) except Book.DoesNotExist: specific_book = None

کوانتیفای کردن داده‌ها

جنگو امکان کوانتیفای کردن داده‌ها را نیز فراهم می‌کند. برای مثال، شمارش تعداد رکوردها:

 

total_books = Book.objects.count()

یا محاسبه مجموع مقادیر یک فیلد خاص:

 

from django.db.models import Sum total_pages = Book.objects.aggregate(Sum('pages'))

بهینه‌سازی کوئری‌ها

برای بهینه‌سازی کوئری‌ها و کاهش تعداد درخواست‌ها به پایگاه داده، می‌توان از روش‌هایی مانند select_related و prefetch_relatedاستفاده کرد. این روش‌ها برای بارگذاری مرتبط‌ترین داده‌ها به صورت بهینه کاربرد دارند.

نتیجه‌گیری

کوئری‌ها در جنگو با استفاده از سیستم ORM بسیار ساده و قابل فهم هستند. با استفاده از متدهای مختلفی که جنگو ارائه می‌دهد، می‌توان به راحتی داده‌ها را از پایگاه داده بازیابی، فیلتر و مرتب کرد. درک صحیح این متدها و استفاده بهینه از آنها، به توسعه‌دهندگان کمک می‌کند تا برنامه‌های وبی کارآمد و مقیاس‌پذیر ایجاد کنند.

 

 

 

print("hello")

تگ ها

(0) نظر

نظرت چیه؟

وارد کردن ایمیل اختیاری است.