SQLAlchemy মূলত দুটি অংশে বিভক্ত: Core এবং ORM। উভয়েই ডেটাবেস ম্যানিপুলেশন করার জন্য ব্যবহৃত হয়, তবে তাদের কাজ করার পদ্ধতি এবং ব্যবহারের ধরনে পার্থক্য রয়েছে।
নিচে SQLAlchemy Core এবং ORM এর মধ্যে প্রধান পার্থক্য তুলে ধরা হলো:
1. পদ্ধতি এবং ব্যবহারের ধরন
- Core:
- SQLAlchemy Core সরাসরি SQL স্টেটমেন্ট এবং ডেটাবেসের সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়।
- এটি SQL Expression Language ব্যবহার করে কাস্টম SQL কোয়েরি তৈরি এবং কার্যকর করতে সাহায্য করে।
- Core মূলত ডেটাবেসের টেবিল, কলাম এবং রেকর্ডের সাথে সোজাসুজি কাজ করে, কোন অবজেক্ট-ওরিয়েন্টেড পদ্ধতি নয়।
- ORM:
- SQLAlchemy ORM ডেটাবেস টেবিল এবং Python অবজেক্টের মধ্যে সম্পর্ক স্থাপন করে।
- ORM ডেটাবেসের রেকর্ডগুলোকে Python অবজেক্ট হিসেবে রিপ্রেজেন্ট করে এবং অবজেক্ট-ওরিয়েন্টেড পদ্ধতি ব্যবহার করে ডেটাবেসে CRUD অপারেশন সম্পাদন করে।
- ORM ডেটাবেসের টেবিলগুলিকে Python ক্লাসের মাধ্যমে ম্যাপ করে, যা ডেটাবেস ম্যানিপুলেশন সহজ করে তোলে।
2. SQL লেখার পদ্ধতি
Core:
- SQLAlchemy Core সরাসরি SQL স্টেটমেন্টের মাধ্যমে ডেটাবেসের সাথে যোগাযোগ করে।
- এটি SQL কিউরি তৈরি এবং ডেটাবেস অপারেশন পরিচালনার জন্য একটি কার্যকরী পদ্ধতি প্রদান করে, কিন্তু এতে Object-Relational Mapping নেই।
উদাহরণ:
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData # ইঞ্জিন তৈরি engine = create_engine('sqlite:///example.db', echo=True) # মেটাডেটা এবং টেবিল তৈরি metadata = MetaData() users = Table('users', metadata, Column('id', Integer, primary_key=True), Column('name', String), Column('age', Integer)) # টেবিল তৈরি metadata.create_all(engine) # টেবিল থেকে ডেটা ফেচ করা with engine.connect() as connection: result = connection.execute(users.select()) for row in result: print(row)ORM:
- ORM ডেটাবেসের রেকর্ডগুলোকে Python ক্লাসের অবজেক্ট হিসেবে উপস্থাপন করে, যার ফলে SQL কোড লিখার প্রয়োজন পড়ে না।
- এটি Query API ব্যবহার করে ডেটা রিড, ইনসার্ট, আপডেট, এবং ডিলিট অপারেশন পরিচালনা করতে সক্ষম।
উদাহরণ:
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # Base ক্লাস তৈরি Base = declarative_base() # মডেল তৈরি class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) # ইঞ্জিন তৈরি 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) session.commit() # ডেটা রিড করা users = session.query(User).all() for user in users: print(user.name, user.age) # সেশন বন্ধ করা session.close()
3. ডেটাবেসের সাথে সম্পর্ক
- Core:
- Core শুধুমাত্র টেবিল এবং কলাম স্তরের ম্যানিপুলেশন পরিচালনা করে। এটি ডেটাবেস রেকর্ডের সাথে সম্পর্ক তৈরি বা পরিচালনা করে না।
ORM:
- ORM Relationships (One-to-One, One-to-Many, Many-to-Many) পরিচালনা করার জন্য বিশেষভাবে তৈরি করা হয়েছে। ORM এর মাধ্যমে আপনি ফরেন কী সম্পর্ক, একাধিক টেবিলের মধ্যে সম্পর্ক, এবং অবজেক্ট সম্পর্কিত সম্পর্ক সহজে পরিচালনা করতে পারেন।
উদাহরণ:
class Address(Base): __tablename__ = 'addresses' id = Column(Integer, primary_key=True) email_address = Column(String, nullable=False) user_id = Column(Integer, ForeignKey('users.id')) user = relationship("User", back_populates="addresses") User.addresses = relationship("Address", order_by=Address.id, back_populates="user")
4. ব্যবহারকারী পদ্ধতি
- Core:
- SQLAlchemy Core ব্যবহারের জন্য ডেটাবেসের সরাসরি কাঠামো এবং SQL স্টেটমেন্ট ব্যবহৃত হয়, যা কিছুটা প্রোগ্রামিং এর বেশি দক্ষতা এবং SQL লেখার দক্ষতা চায়।
- ORM:
- ORM অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে কাজ করে, যা Python ডেভেলপারদের জন্য সহজ এবং কম কোড লেখার সুযোগ দেয়। ডেটাবেসে CRUD অপারেশন অনেক সহজ হয়ে যায়, কারণ আপনাকে সরাসরি SQL কিউরি লেখার প্রয়োজন হয় না।
5. পারফরম্যান্স
- Core:
- SQLAlchemy Core সরাসরি SQL কিউরি তৈরি করে, তাই এটি অধিক কাস্টমাইজড এবং পারফরম্যান্সে দ্রুত হতে পারে।
- ORM:
- ORM কিছুটা কম পারফর্ম্যান্ট হতে পারে, কারণ এটি ডেটাবেস রেকর্ডকে অবজেক্টে রূপান্তর করতে সময় নেয়। তবে, Lazy Loading এবং Eager Loading কৌশলগুলো ব্যবহার করে পারফরম্যান্স বাড়ানো যেতে পারে।
সারাংশ
SQLAlchemy Core এবং ORM উভয়েরই ব্যবহার এবং লক্ষ্য আলাদা। Core সরাসরি SQL কিউরি এবং টেবিল কাঠামো ব্যবস্থাপনায় ব্যবহৃত হয়, যেখানে ORM অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে ডেটাবেস অপারেশন সম্পাদন করে, যা কোড লেখার সহজতর পদ্ধতি সরবরাহ করে। সাধারণত, Core বেশি কাস্টমাইজড এবং ORM সহজ ব্যবহারের জন্য ব্যবহৃত হয়।
Content added By
Read more