SQLAlchemy ORM ব্যবহার করা

Database Integration এবং ORM - চেরিপাই (CherryPy) - Web Development

257

CherryPy এবং SQLAlchemy ব্যবহার করে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করা একটি শক্তিশালী সমাধান। SQLAlchemy হলো একটি জনপ্রিয় Object-Relational Mapper (ORM), যা পাইথনের ডেটাবেস ইন্টারঅ্যাকশন সহজ করে। এটি ডেটাবেসের সারণী (tables) এবং রেকর্ডগুলিকে পাইথন ক্লাস এবং অবজেক্টে রূপান্তরিত করে, যার ফলে ডেটাবেসের সাথে কাজ করা আরও সহজ ও সুসংগঠিত হয়।

এই গাইডে আমরা CherryPy অ্যাপ্লিকেশন তৈরি করব যা SQLAlchemy ORM ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করবে এবং ডেটা ম্যানেজমেন্ট করবে।


প্রয়োজনীয়তা

প্রথমে কিছু প্যাকেজ ইনস্টল করতে হবে:

pip install cherrypy sqlalchemy

যদি আপনার ডেটাবেসের জন্য SQLite, MySQL, বা PostgreSQL ব্যবহার করতে চান, তবে উপযুক্ত ড্রাইভারও ইনস্টল করতে হবে।

  • SQLite: SQLAlchemy সাধারণত SQLite ড্রাইভার নিয়ে আসে।
  • MySQL: pip install mysqlclient
  • PostgreSQL: pip install psycopg2

CherryPy এবং SQLAlchemy সেটআপ

১. SQLAlchemy সেটআপ

SQLAlchemy তে একটি ডেটাবেস মডেল তৈরি করা এবং সেশন (Session) তৈরি করা প্রয়োজন।

উদাহরণ: models.py (SQLAlchemy মডেল)

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# SQLAlchemy বেস ক্লাস
Base = declarative_base()

# ডেটাবেসের টেবিল মডেল
class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

    def __init__(self, name, email):
        self.name = name
        self.email = email

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

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

# সেশন প্রস্তুত করা
Session = sessionmaker(bind=engine)
session = Session()

এই কোডে:

  • User ক্লাসটি একটি SQLAlchemy মডেল, যা ডেটাবেসের users টেবিলের সাথে সম্পর্কিত।
  • engine হল ডেটাবেসের সাথে সংযোগ করার জন্য ব্যবহৃত, এবং এটি SQLite ডেটাবেস ফাইল example.db এ সংযুক্ত।
  • session হল SQLAlchemy সেশন, যা ডেটাবেসের সাথে কাজ করার জন্য ব্যবহৃত।

২. CherryPy অ্যাপ্লিকেশন তৈরি

এখন CherryPy অ্যাপ্লিকেশন তৈরি করা যাক, যা ডেটাবেস থেকে ডেটা পড়বে এবং ইনসার্ট করবে।

উদাহরণ: app.py (CherryPy অ্যাপ)

import cherrypy
from models import session, User  # models.py থেকে session এবং User ক্লাস ইমপোর্ট

class MyApp:
    @cherrypy.expose
    def index(self):
        # ডেটাবেস থেকে ইউজারদের প্রাপ্তি
        users = session.query(User).all()
        users_list = "<br>".join([f"{user.id}. {user.name} ({user.email})" for user in users])
        return f"Users in database:<br>{users_list}"

    @cherrypy.expose
    def add_user(self, name, email):
        # নতুন ইউজার ইনসার্ট করা
        new_user = User(name=name, email=email)
        session.add(new_user)
        session.commit()
        return f"User {name} added successfully!"

if __name__ == '__main__':
    cherrypy.quickstart(MyApp())

এখানে:

  • index মেথডটি ডেটাবেস থেকে সব ইউজারকে পাঠায়।
  • add_user মেথডটি একটি নতুন ইউজার যোগ করে এবং ডেটাবেসে সংরক্ষণ করে।

৩. CherryPy চালানো

এখন CherryPy সার্ভার চালানোর জন্য টার্মিনালে এই কমান্ডটি দিন:

python app.py

এরপর ব্রাউজারে গিয়ে http://127.0.0.1:8080 এ গিয়ে অ্যাপটি দেখুন।

  • রুট পেজ (index): ইউজারদের তালিকা দেখাবে।
  • /add_user পাথ: নতুন ইউজার যোগ করার জন্য name এবং email প্যারামিটার সহ POST রিকোয়েস্ট পাঠাতে হবে, যেমন:

    http://127.0.0.1:8080/add_user?name=John&email=john@example.com
    

SQLAlchemy এবং CherryPy এর সাথে উন্নত ফিচার

  1. ব্যাচ ইনসার্ট: একাধিক রেকর্ড একসাথে ইনসার্ট করার জন্য session.add_all([user1, user2]) ব্যবহার করা যায়।
  2. কুয়েরি অপটিমাইজেশন: প্রয়োজন হলে ডেটাবেস কুয়েরি অপটিমাইজ করার জন্য filter(), filter_by(), join() ইত্যাদি ব্যবহার করা যেতে পারে।
  3. ব্যতিক্রম হ্যান্ডলিং: ডেটাবেসে ত্রুটি ঘটলে তা try-except ব্লক ব্যবহার করে সঠিকভাবে হ্যান্ডল করা যেতে পারে।

CherryPy এবং SQLAlchemy একত্রে ব্যবহার করে আপনি সহজেই ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে। SQLAlchemy ORM আপনাকে ডেটাবেসের সাথে কাজ করতে শক্তিশালী এবং সহজ উপায় প্রদান করে, এবং CherryPy আপনাকে একটি দ্রুত, সিম্পল এবং ফ্লেক্সিবল ওয়েব সার্ভার তৈরি করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...