SQLAlchemy তে Session কী এবং এর ভূমিকা

SQLAlchemy এর মূল ধারণা - এসকিউএল অ্যালকেমি (SQLAlchemy) - Database Tutorials

326

Session SQLAlchemy ORM (Object Relational Mapping) এর একটি গুরুত্বপূর্ণ উপাদান, যা ডেটাবেসের সাথে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে যোগাযোগ স্থাপন এবং ম্যানিপুলেশন করে। এটি ডেটাবেসে Create, Read, Update, Delete (CRUD) অপারেশন পরিচালনার জন্য ব্যবহৃত হয় এবং Transaction Management এ সহায়ক ভূমিকা পালন করে।


Session এর ভূমিকা

  1. ডেটাবেসে অপারেশন পরিচালনা
    Session ডেটাবেসে ডেটা ইনসার্ট, আপডেট, মুছে ফেলা এবং অনুসন্ধান (ফেচিং) করতে ব্যবহৃত হয়। এটি SQLAlchemy ORM অবজেক্টগুলিকে ডেটাবেস টেবিলের রেকর্ডে রূপান্তরিত করে।
  2. ট্রানজেকশন ম্যানেজমেন্ট
    Session ডেটাবেসের ট্রানজেকশন পরিচালনা করতে সাহায্য করে। এটি ডেটাবেসে ট্রানজেকশন শুরু, কমিট এবং রোলব্যাক করতে ব্যবহৃত হয়।
  3. অবজেক্ট স্টেট ম্যানেজমেন্ট
    Session অবজেক্টের স্টেট (যেমন new, dirty, deleted, persistent) ট্র্যাক করে এবং এগুলোর ভিত্তিতে ডেটাবেসের সাথে সংশ্লিষ্ট কার্যক্রম পরিচালনা করে।
  4. Lazy Loading এবং Eager Loading
    Session ডেটাবেস থেকে সম্পর্কিত অবজেক্টগুলি লোড করার সময় Lazy Loading বা Eager Loading কৌশল ব্যবহার করতে পারে। এটি ডেটাবেসের কার্যক্ষমতা উন্নত করতে সাহায্য করে।
  5. ডেটাবেস রিড এবং রাইট অপারেশন
    Session কে ব্যবহার করে SQLAlchemy ORM অবজেক্টের মাধ্যমে ডেটা রিড এবং রাইট করা যায়। এটি SQL কিউরি ব্যবহারের চাইতে অধিক সুবিধাজনক এবং সহজতর পদ্ধতি।

Session তৈরি করা এবং ব্যবহার

SQLAlchemy তে Session তৈরি করতে sessionmaker ফাংশন ব্যবহার করা হয়, যা একটি Session ক্লাস তৈরি করে এবং ডেটাবেস সংযোগের সাথে যুক্ত করে। একবার Session তৈরি হলে, আপনি সেটি ব্যবহার করে ডেটাবেসের সাথে কার্যক্রম সম্পন্ন করতে পারেন।

উদাহরণ:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# ডেটাবেস ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)

# Session তৈরি
Session = sessionmaker(bind=engine)
session = Session()

# নতুন ইউজার তৈরি এবং সেভ করা
new_user = User(name="Alice", age=30)
session.add(new_user)
session.commit()  # ডেটাবেসে পরিবর্তন সেভ

# ডেটা রিড করা
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

# সংযোগ বন্ধ করা
session.close()

এই উদাহরণে, sessionmaker ব্যবহার করে একটি Session তৈরি করা হয়েছে, যা ডেটাবেসে নতুন ইউজার ইনসার্ট এবং ডেটা রিড করার কাজ করেছে।


Session এর মেথডসমূহ

SQLAlchemy তে Session এর মাধ্যমে ডেটাবেস অপারেশন করার জন্য বিভিন্ন মেথড সরবরাহ করা হয়:

  • add(): একটি অবজেক্ট সেশন দ্বারা ট্র্যাক করা শুরু করতে ব্যবহৃত হয়।
  • commit(): পরিবর্তনগুলো ডেটাবেসে সেভ (commit) করার জন্য ব্যবহৃত হয়।
  • rollback(): যদি কোন সমস্যা হয়, তবে সব পরিবর্তন ফিরিয়ে আনার জন্য ব্যবহৃত হয়।
  • close(): Session বন্ধ করে দেয়।
  • query(): ডেটাবেস থেকে ডেটা ফেচ (select) করার জন্য ব্যবহৃত হয়।

Session এবং Transaction

SQLAlchemy তে ট্রানজেকশন পরিচালনা করার জন্য Session ব্যবহৃত হয়। এটি একাধিক SQL অপারেশনকে একটি ট্রানজেকশনে বেঁধে রাখে এবং প্রয়োজনে পুরো ট্রানজেকশন রোলব্যাক বা কমিট করতে সহায়তা করে।

ট্রানজেকশন পরিচালনা:

# নতুন ইউজার তৈরি এবং সেভ করা
new_user = User(name="John", age=25)
session.add(new_user)

try:
    session.commit()  # ডেটাবেসে সেভ
except:
    session.rollback()  # কোনো সমস্যা হলে রোলব্যাক
    print("Transaction failed")
finally:
    session.close()  # সেশন বন্ধ

এখানে, যদি কোন ত্রুটি ঘটে, তবে session.rollback() এর মাধ্যমে সম্পূর্ণ ট্রানজেকশন রোলব্যাক করা হবে, এবং সেশন বন্ধ করার পরবর্তী ধাপ হবে session.close()


Session এর সম্পর্কিত কিছু গুরুত্বপূর্ণ ধারণা

  • Persistent Objects: যখন একটি অবজেক্ট Session তে থাকে এবং ডেটাবেসে তার সংশ্লিষ্ট রেকর্ডটি উপস্থিত থাকে, তখন এটি Persistent অবজেক্ট হিসেবে বিবেচিত হয়।
  • Dirty Objects: যখন একটি অবজেক্ট Session এ পরিবর্তিত হয়, তবে সেটি Dirty অবজেক্ট হিসেবে ট্র্যাক করা হয়।
  • New Objects: যখন একটি নতুন অবজেক্ট তৈরি করা হয় এবং সেশন দ্বারা ট্র্যাক করা হয়, তখন সেটি New অবজেক্ট হিসেবে বিবেচিত হয়।
  • Deleted Objects: যদি একটি অবজেক্টকে সেশন থেকে মুছে ফেলা হয়, তবে এটি Deleted অবজেক্ট হিসেবে বিবেচিত হয়।

Session ম্যানেজমেন্ট এবং পারফরম্যান্স

Session এর মাধ্যমে ডেটাবেসে কার্যক্রম সম্পন্ন করার সময় পারফরম্যান্সের জন্য কিছু কৌশল রয়েছে, যেমন:

  • Lazy Loading: ডেটাবেস থেকে শুধুমাত্র প্রয়োজনীয় তথ্যই লোড করা হয়।
  • Eager Loading: সম্পর্কিত ডেটা একবারে লোড করা হয়, যাতে পরবর্তীতে আবার ডেটাবেসে কল না করতে হয়।
  • Batch Processing: একাধিক অবজেক্ট একযোগে ডেটাবেসে সেভ করা যায়, যা পারফরম্যান্স বাড়ায়।

সারাংশ

SQLAlchemy তে Session একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান, যা ডেটাবেস অপারেশন পরিচালনা, ট্রানজেকশন ম্যানেজমেন্ট এবং অবজেক্ট স্টেট ট্র্যাকিং এর জন্য ব্যবহৃত হয়। এটি ডেটাবেসের সাথে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে কার্যকরভাবে কাজ করতে সহায়ক। Session এর মাধ্যমে CRUD অপারেশন, ট্রানজেকশন কমিট ও রোলব্যাক, এবং ডেটা লোডিং কৌশলগুলির ব্যবহার ডেটাবেস ম্যানিপুলেশনকে সহজ এবং দ্রুত করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...