Database Tutorials Session.commit(), Session.rollback(), এবং Session.close() এর ব্যবহার গাইড ও নোট

262

SQLAlchemy তে Session হলো ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করার জন্য ব্যবহৃত একটি গুরুত্বপূর্ণ উপাদান। এটি ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করতে সাহায্য করে এবং ডেটাবেস ট্রানজেকশন ম্যানেজমেন্টের জন্য প্রয়োজনীয় মেথড সরবরাহ করে। commit(), rollback(), এবং close() হল সেই মেথডগুলো, যেগুলো ট্রানজেকশন পরিচালনা করতে ব্যবহৃত হয়।


Session.commit()

commit() মেথড ব্যবহার করা হয় ডেটাবেসে সমস্ত পরিবর্তন পক্ক (commit) করার জন্য। অর্থাৎ, আপনি যখন ডেটাবেসে কোনো নতুন ডেটা ইনসার্ট, আপডেট, বা ডিলিট করেন, তখন এই পরিবর্তনগুলো ডেটাবেসে স্থায়ী করতে commit() কল করতে হয়।

  • কিভাবে কাজ করে? commit() কল করার পর, সমস্ত অপারেশন ডেটাবেসে সংরক্ষিত হয় এবং সেগুলোর ফলাফল পরিবর্তন করা সম্ভব হয় না।

উদাহরণ:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from my_models import User  # ধরুন, User মডেল তৈরি করা আছে

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

# নতুন ইউজার ইনসার্ট করা
new_user = User(name='Alice', age=30)
session.add(new_user)

# পরিবর্তন পক্ক (commit) করা
session.commit()  # এই কমান্ডটি ডেটাবেসে পরিবর্তন সেভ করে

# সেশন বন্ধ করা
session.close()

এখানে, session.commit() ব্যবহার করে নতুন ইউজার ডেটাবেসে সেভ করা হচ্ছে।


Session.rollback()

rollback() মেথডটি ব্যবহার করা হয় ট্রানজেকশন বাতিল করার জন্য, অর্থাৎ যদি কোনো কারণে টানেল বা অপারেশন চলাকালীন ত্রুটি ঘটে, তবে এই মেথডটি সমস্ত পরিবর্তন ফিরে নিয়ে আসবে এবং ডেটাবেস পূর্বাবস্থায় ফিরে যাবে।

  • কিভাবে কাজ করে? যদি কোনো ত্রুটি ঘটবে বা আপনি যদি সিদ্ধান্ত পরিবর্তন করতে চান, তবে rollback() কল করলে সমস্ত পরিবর্তন মুছে যাবে এবং ডেটাবেস পূর্বাবস্থায় ফিরে আসবে।

উদাহরণ:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from my_models import User

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

try:
    # নতুন ইউজার ইনসার্ট করা
    new_user = User(name='John', age=25)
    session.add(new_user)

    # কোনো সমস্যা হলে commit না করে rollback করা
    session.rollback()  # সব পরিবর্তন রোলব্যাক হবে

except Exception as e:
    print(f"Error occurred: {e}")
    session.rollback()  # ত্রুটির পরে rollback নিশ্চিত করা

# সেশন বন্ধ করা
session.close()

এখানে, session.rollback() ব্যবহার করে ইনসার্ট করা ইউজার ডেটা রোলব্যাক করা হয়েছে, যাতে ডেটাবেসে কোনো পরিবর্তন না হয়।


Session.close()

close() মেথডটি ব্যবহার করা হয় সেশন বন্ধ করতে। এটি ডেটাবেস সংযোগ বন্ধ করে এবং সমস্ত সংস্থান মুক্ত করে, যার ফলে সেশন ব্যবহারের পর সংযোগের অবাঞ্ছিত ব্যবহার এড়ানো যায়।

  • কিভাবে কাজ করে? একবার আপনি commit() বা rollback() সম্পন্ন করলে, close() কল করা উচিত যাতে সেশন বন্ধ হয়ে যায় এবং পরবর্তী কাজের জন্য প্রস্তুত থাকে।

উদাহরণ:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from my_models import User

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

# নতুন ইউজার ইনসার্ট করা
new_user = User(name='Bob', age=40)
session.add(new_user)

# পরিবর্তন পক্ক (commit) করা
session.commit()

# সেশন বন্ধ করা
session.close()  # সেশন বন্ধ করা

এখানে, session.close() ব্যবহার করে সেশন বন্ধ করা হয়েছে।


Session মেথডের সারাংশ

  1. commit(): ডেটাবেসে করা সমস্ত পরিবর্তন স্থায়ী করে।
  2. rollback(): ডেটাবেসে করা সমস্ত পরিবর্তন বাতিল করে, এবং ডেটাবেসকে পূর্বাবস্থায় ফিরিয়ে নিয়ে আসে।
  3. close(): সেশন বন্ধ করে সংযোগটি মুক্ত করে এবং পরবর্তী অপারেশনের জন্য প্রস্তুত করে।

ট্রানজেকশন পরিচালনার উদাহরণ

SQLAlchemy তে ট্রানজেকশন পরিচালনা করার সময় সাধারণত commit(), rollback() এবং close() ব্যবহার করা হয়। নিচে একটি সাধারণ ট্রানজেকশন ব্যবস্থাপনার উদাহরণ দেওয়া হলো:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from my_models import User

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

try:
    # নতুন ইউজার ইনসার্ট করা
    new_user = User(name='Emily', age=22)
    session.add(new_user)

    # সব অপারেশন পক্ক (commit) করা
    session.commit()

except Exception as e:
    print(f"Error occurred: {e}")
    session.rollback()  # ত্রুটির ক্ষেত্রে রোলব্যাক করা

finally:
    session.close()  # সেশন বন্ধ করা

এখানে, একটি নতুন ইউজার ইনসার্ট করা হয়েছে এবং সফলভাবে পক্ক (commit) করা হয়েছে। যদি কোনো সমস্যা ঘটে তবে রোলব্যাক করা হয়েছে এবং সেশন বন্ধ করা হয়েছে।


সারাংশ

SQLAlchemy তে Session ডেটাবেসে অপারেশন পরিচালনা করার জন্য ব্যবহৃত হয়, এবং এর মধ্যে commit(), rollback(), এবং close() মেথডগুলি ট্রানজেকশন পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ। commit() ডেটাবেসে পরিবর্তন স্থায়ী করে, rollback() সমস্ত পরিবর্তন বাতিল করে এবং close() সেশন বন্ধ করে সংযোগ সম্পন্ন করে।

Content added By
Promotion

Are you sure to start over?

Loading...