SQLAlchemy ORM দিয়ে মডেল তৈরি করা

ORM (Object Relational Mapping) এর সাথে কাজ করা - এসকিউএল অ্যালকেমি (SQLAlchemy) - Database Tutorials

337

SQLAlchemy ORM (Object Relational Mapping) এর মাধ্যমে Python ক্লাস এবং ডেটাবেস টেবিলের মধ্যে সম্পর্ক তৈরি করা হয়। ORM ব্যবহার করে ডেটাবেস টেবিলগুলোকে Python ক্লাসের মাধ্যমে মডেল করা হয়, যার ফলে SQLAlchemy ডেটাবেসের সাথে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে যোগাযোগ করতে পারে। SQLAlchemy ORM এর মাধ্যমে ডেটাবেস টেবিলের কাঠামো এবং তাদের মধ্যে সম্পর্ক খুব সহজে মডেল করা যায়।


ORM মডেল তৈরি করার প্রক্রিয়া

SQLAlchemy ORM দিয়ে মডেল তৈরি করতে Declarative Base ব্যবহার করতে হয়, যেটি SQLAlchemy ORM এর মূল অংশ। মডেল তৈরি করার জন্য Base ক্লাসের সাথে Python ক্লাসগুলোকে সংযুক্ত করা হয়, যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে।

1. Declarative Base তৈরি করা

প্রথমে, Declarative Base তৈরি করতে হয়। এটি একটি শ্রেণি (class) যা SQLAlchemy ORM এর মাধ্যমে ডেটাবেস টেবিলের জন্য অবজেক্ট মডেল তৈরি করে।

from sqlalchemy.ext.declarative import declarative_base

# Base ক্লাস তৈরি
Base = declarative_base()

2. মডেল (Model) তৈরি করা

SQLAlchemy ORM ব্যবহার করে একটি Python ক্লাস তৈরি করা হয়, যা একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। ক্লাসের প্রতিটি অ্যাট্রিবিউট (attribute) একটি টেবিলের কলাম হিসেবে রূপান্তরিত হয়।

from sqlalchemy import Column, Integer, String

# User মডেল তৈরি
class User(Base):
    __tablename__ = 'users'  # ডেটাবেস টেবিলের নাম
    id = Column(Integer, primary_key=True)  # প্রাথমিক কী (Primary Key)
    name = Column(String)  # নামের কলাম
    age = Column(Integer)  # বয়সের কলাম

এখানে, User ক্লাস users নামক ডেটাবেস টেবিলের জন্য একটি ORM মডেল। id, name, এবং age হল এই টেবিলের কলামসমূহ। id কলামটি primary_key=True দ্বারা প্রাথমিক কী হিসেবে চিহ্নিত করা হয়েছে।


3. ডেটাবেসে টেবিল তৈরি করা

একবার মডেল তৈরি হয়ে গেলে, আপনাকে ডেটাবেসে টেবিলটি তৈরি করতে হবে। এজন্য Base.metadata.create_all() মেথড ব্যবহার করা হয়।

from sqlalchemy import create_engine

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

# টেবিল তৈরি
Base.metadata.create_all(engine)

এখানে, create_all() মেথডটি Base এর সমস্ত মডেল টেবিলগুলো ডেটাবেসে তৈরি করবে। এই উদাহরণে, example.db নামে SQLite ডেটাবেস ফাইল তৈরি হবে এবং users টেবিল এতে তৈরি হবে।


4. Session এর মাধ্যমে ডেটাবেসে ডেটা ইনসার্ট করা

একবার মডেল এবং টেবিল তৈরি হলে, SQLAlchemy ORM এর মাধ্যমে ডেটাবেসে ডেটা ইনসার্ট করতে Session ব্যবহার করা হয়।

from sqlalchemy.orm import sessionmaker

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

# নতুন ইউজার তৈরি
new_user = User(name="John Doe", age=28)

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

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

এখানে, session.add() ব্যবহার করে নতুন ইউজার অবজেক্ট new_user ডেটাবেসে সেভ করা হয়েছে এবং session.commit() ব্যবহার করে সেই পরিবর্তন ডেটাবেসে সংরক্ষিত হয়েছে।


5. ডেটাবেস থেকে ডেটা রিড করা

SQLAlchemy ORM ব্যবহার করে ডেটাবেস থেকে ডেটা রিড করার জন্য query() মেথড ব্যবহার করা হয়।

# ডেটাবেস থেকে ইউজার রিড করা
users = session.query(User).all()  # সব ইউজার রিড করা

for user in users:
    print(user.name, user.age)

এখানে, session.query(User).all() ব্যবহার করে User মডেলের সব রেকর্ড রিড করা হয়েছে এবং প্রতিটি ইউজারের নাম ও বয়স প্রিন্ট করা হয়েছে।


SQLAlchemy ORM এর সম্পর্কিত কিছু গুরুত্বপূর্ণ বিষয়

  • Primary Key: এটি টেবিলের একটি বিশেষ কলাম যা ইউনিক ভ্যালু ধারণ করে এবং প্রতিটি রেকর্ডের জন্য স্বতন্ত্রভাবে কাজ করে।
  • Foreign Key: এটি দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করে। একটি টেবিলের কলাম অন্য টেবিলের প্রাথমিক কীকে রেফারেন্স করে।
  • Relationships: SQLAlchemy ORM এর মাধ্যমে One-to-One, One-to-Many, এবং Many-to-Many সম্পর্ক তৈরি করা যায়।
  • Declarative Base: এটি SQLAlchemy ORM মডেলিং এর জন্য ব্যবহৃত একটি উচ্চ স্তরের API।

সারাংশ

SQLAlchemy ORM ব্যবহার করে ডেটাবেস টেবিলের জন্য Python ক্লাস তৈরি করা হয়, যা একটি অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে ডেটাবেস অপারেশন সম্পন্ন করতে সহায়ক। Base এবং Session ব্যবহার করে টেবিল তৈরি, ডেটা ইনসার্ট, রিড, আপডেট এবং ডিলিট করা যায়। SQLAlchemy ORM এর মাধ্যমে ডেটাবেস পরিচালনা করা সহজ এবং কার্যকরী হয়, যা ডেভেলপারদের সময় বাঁচাতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...