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 এর সাথে উন্নত ফিচার
- ব্যাচ ইনসার্ট: একাধিক রেকর্ড একসাথে ইনসার্ট করার জন্য
session.add_all([user1, user2])ব্যবহার করা যায়। - কুয়েরি অপটিমাইজেশন: প্রয়োজন হলে ডেটাবেস কুয়েরি অপটিমাইজ করার জন্য
filter(),filter_by(),join()ইত্যাদি ব্যবহার করা যেতে পারে। - ব্যতিক্রম হ্যান্ডলিং: ডেটাবেসে ত্রুটি ঘটলে তা
try-exceptব্লক ব্যবহার করে সঠিকভাবে হ্যান্ডল করা যেতে পারে।
CherryPy এবং SQLAlchemy একত্রে ব্যবহার করে আপনি সহজেই ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে। SQLAlchemy ORM আপনাকে ডেটাবেসের সাথে কাজ করতে শক্তিশালী এবং সহজ উপায় প্রদান করে, এবং CherryPy আপনাকে একটি দ্রুত, সিম্পল এবং ফ্লেক্সিবল ওয়েব সার্ভার তৈরি করতে সহায়তা করে।
Read more