Database Tutorials Query Sorting এবং Ordering Techniques গাইড ও নোট

309

SQLAlchemy তে ডেটা সঠিকভাবে সাজানোর জন্য ordering বা sorting একটি গুরুত্বপূর্ণ কৌশল। এটি ডেটাবেস থেকে প্রাপ্ত ডেটার অ্যারে বা তালিকাকে নির্দিষ্ট ক্রমে সাজাতে ব্যবহৃত হয়। এই টিউটোরিয়ালে SQLAlchemy তে কীভাবে ডেটা সাজানো বা অর্ডার করা যায়, তা নিয়ে আলোচনা করা হবে।


1. order_by() Method

SQLAlchemy তে ডেটা সাজানোর জন্য সবচেয়ে সাধারণ পদ্ধতি হলো order_by() মেথড ব্যবহার করা। এটি Query অবজেক্টে ডেটাকে একটি নির্দিষ্ট কলামের ভিত্তিতে সাজায়।

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from your_models import User  # Assuming User is a model

# Database connection setup
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()

# Sorting Users by name
users = session.query(User).order_by(User.name).all()

এখানে User.name কলাম অনুসারে ডেটা সাজানো হয়েছে। ডিফল্টভাবে এটি অ্যাসেনডিং অর্ডারে (ASC) সাজানো হবে।


2. Descending Order (DESC)

ডেটা উল্টো বা নিম্নক্রমে (descending) সাজাতে desc() ফাংশন ব্যবহার করা হয়। এর মাধ্যমে আমরা একটি বা একাধিক কলামকে ডেসেন্ডিং অর্ডারে সাজাতে পারি।

from sqlalchemy import desc

# Sorting Users by name in descending order
users_desc = session.query(User).order_by(desc(User.name)).all()

এখানে desc(User.name) ব্যবহার করা হয়েছে যা ডেটা নামের ভিত্তিতে ডেসেন্ডিং অর্ডারে সাজাবে।


3. Multiple Columns Ordering

একাধিক কলামের ভিত্তিতে ডেটা সাজানোও সম্ভব। এর মাধ্যমে আপনি প্রথমে এক কলামের উপর অর্ডার করতে পারেন, এবং তারপর আরেকটি কলামকে দ্বিতীয় পর্যায়ে ব্যবহার করতে পারেন।

# Sorting Users by age and then by name
users_multi_order = session.query(User).order_by(User.age, User.name).all()

এখানে প্রথমে age কলামের উপর অর্ডার করা হবে এবং পরে name কলামটি ব্যবহৃত হবে, যদি age সমান থাকে।


4. Complex Ordering with desc() and asc()

আপনি চাইলে বিভিন্ন কলামকে অ্যাসেন্ডিং (ASC) এবং ডেসেন্ডিং (DESC) উভয়ভাবেই সাজাতে পারেন।

# Sorting Users first by age (ascending) and then by name (descending)
users_complex_order = session.query(User).order_by(User.age, desc(User.name)).all()

এখানে age কলামটি অ্যাসেন্ডিং অর্ডারে সাজানো হবে এবং name কলামটি ডেসেন্ডিং অর্ডারে সাজানো হবে।


5. Limiting and Paginating Results

অনেক সময় একসাথে বিশাল পরিমাণ ডেটা প্রাপ্ত হয়, যেটি সাজানো এবং দেখানো কঠিন হতে পারে। limit() এবং offset() ব্যবহার করে আপনি ডেটাকে পেজিনেট করতে পারেন।

# Sorting by age and limiting the results
users_limited = session.query(User).order_by(User.age).limit(10).offset(20).all()

এখানে প্রথম ২০টি User বাদ দিয়ে পরবর্তী ১০টি User প্রাপ্ত হবে, যাদের age অনুসারে সাজানো হয়েছে।


6. Dynamic Ordering Based on User Input

কিছু ক্ষেত্রে ব্যবহারকারী যদি ভিন্ন ভিন্ন কলাম দ্বারা ডেটা সাজাতে চান, তাহলে ডাইনামিক্যালি order_by ফাংশনটি ব্যবহার করা যেতে পারে।

# Dynamic ordering based on user input
column_name = 'age'  # Assume this comes from user input
order = 'desc'  # Assume this comes from user input

if order == 'desc':
    users_dynamic_order = session.query(User).order_by(desc(getattr(User, column_name))).all()
else:
    users_dynamic_order = session.query(User).order_by(getattr(User, column_name)).all()

এখানে getattr() ফাংশন ব্যবহার করে ব্যবহারকারীর ইনপুট অনুযায়ী কলামটি নির্বাচন করা হয়েছে এবং desc() বা ডিফল্ট অ্যাসেন্ডিং অর্ডারে সাজানো হয়েছে।


সারাংশ

SQLAlchemy তে ডেটা সাজানো এবং অর্ডারিং করার বিভিন্ন পদ্ধতি রয়েছে। এগুলোর মধ্যে order_by(), desc(), একাধিক কলাম ব্যবহার, এবং ডাইনামিক অর্ডারিং অন্যতম। আপনি চাইলে এই পদ্ধতিগুলোর সংমিশ্রণ ব্যবহার করে আরও কার্যকরভাবে ডেটা সাজাতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...