SQLAlchemy এবং FastAPI এর ইন্টিগ্রেশন

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর সঙ্গে Database Integration
191

FastAPI এবং SQLAlchemy একসাথে ব্যবহার করে আপনি একটি পাইথন-বেসড ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে SQLAlchemy ডাটাবেস ইন্টারঅ্যাকশনের জন্য ব্যবহৃত হয় এবং FastAPI HTTP এন্ডপয়েন্ট তৈরি এবং পরিচালনা করে। SQLAlchemy একটি শক্তিশালী ORM (Object-Relational Mapping) টুল যা SQL ডাটাবেসের সাথে কাজ করতে সহায়ক, এবং FastAPI তে এটি সহজে ইন্টিগ্রেট করা যায়।

এখানে FastAPI এবং SQLAlchemy এর ইন্টিগ্রেশন কিভাবে কাজ করে এবং কীভাবে ডাটাবেস পরিচালনা করা যায় তা বিস্তারিতভাবে আলোচনা করা হলো।


Step 1: SQLAlchemy ইনস্টলেশন

প্রথমে আপনাকে SQLAlchemy এবং Databases (অ্যাসিঙ্ক্রোনাস ডাটাবেস সাপোর্টের জন্য) ইনস্টল করতে হবে:

pip install sqlalchemy databases

এছাড়া, আপনি যদি SQLite ডাটাবেস ব্যবহার করতে চান, তবে এই কমান্ডটি ব্যবহার করুন:

pip install sqlite

Step 2: FastAPI এবং SQLAlchemy সেটআপ

এখানে একটি সিম্পল FastAPI অ্যাপ্লিকেশন তৈরি করা হয়েছে যেখানে SQLAlchemy ব্যবহৃত হচ্ছে।

SQLAlchemy ডাটাবেস কনফিগারেশন:

SQLAlchemy ব্যবহারের জন্য প্রথমে ডাটাবেস কনফিগারেশন তৈরি করতে হবে। এই কনফিগারেশনের মধ্যে ডাটাবেস ইঞ্জিন এবং সেশন তৈরি করা হয়।

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

# ডাটাবেস কনফিগারেশন
DATABASE_URL = "sqlite:///./test.db"

# ডাটাবেস ইঞ্জিন তৈরি
engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})

# সেশন তৈরি
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# ডাটাবেস মডেল তৈরি করার জন্য বেস ক্লাস
Base = declarative_base()

এখানে:

  • DATABASE_URL: ডাটাবেস সংযোগের URL।
  • engine: SQLAlchemy ইঞ্জিন, যা ডাটাবেসের সাথে সংযোগ স্থাপন করবে।
  • SessionLocal: সেশন ম্যানেজমেন্টের জন্য SQLAlchemy-র সেশন ফ্যাক্টরি।
  • Base: SQLAlchemy মডেল তৈরি করতে ব্যবহৃত বেস ক্লাস।

ডাটাবেস মডেল তৈরি করা:

এখন একটি ডাটাবেস মডেল তৈরি করা যাক। উদাহরণস্বরূপ, একটি User মডেল তৈরি করা যাক:

class User(Base):
    __tablename__ = "users"

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

এখানে:

  • User ক্লাসটি SQLAlchemy মডেল, যেখানে তিনটি কলাম (id, name, email) ডিফাইন করা হয়েছে।
  • index=True: ফিল্ডগুলির জন্য ইনডেক্স তৈরি করবে।
  • unique=True: email ফিল্ডটি ইউনিক হতে হবে, অর্থাৎ, একাধিক ব্যবহারকারী একই ইমেইল ব্যবহার করতে পারবেন না।

Step 3: FastAPI এন্ডপয়েন্ট তৈরি

এখন FastAPI অ্যাপ তৈরি করে ডাটাবেসের সাথে ইন্টিগ্রেট করা যাক।

from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.orm import Session
from pydantic import BaseModel
from typing import List

# FastAPI অ্যাপ তৈরি
app = FastAPI()

# Pydantic Model for Request and Response
class UserCreate(BaseModel):
    name: str
    email: str

class UserResponse(BaseModel):
    id: int
    name: str
    email: str

    class Config:
        orm_mode = True

# Dependency to get the database session
def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

# Create a new user
@app.post("/users/", response_model=UserResponse)
def create_user(user: UserCreate, db: Session = Depends(get_db)):
    db_user = User(name=user.name, email=user.email)
    db.add(db_user)
    db.commit()
    db.refresh(db_user)
    return db_user

# Get all users
@app.get("/users/", response_model=List[UserResponse])
def get_users(db: Session = Depends(get_db)):
    users = db.query(User).all()
    return users

এখানে:

  • UserCreate: Pydantic মডেল যা ইনপুট হিসেবে name এবং email নেয়।
  • UserResponse: Pydantic মডেল যা রেসপন্স হিসেবে id, name, এবং email প্রদান করে। এটি orm_mode = True এর মাধ্যমে SQLAlchemy মডেল থেকে রেসপন্স তৈরি করে।
  • get_db: ডাটাবেস সেশন রিটার্ন করার জন্য একটি Dependency ফাংশন।
  • create_user: নতুন ব্যবহারকারী তৈরি করার জন্য POST এন্ডপয়েন্ট।
  • get_users: সব ব্যবহারকারীদের ডাটাবেস থেকে আনা এবং রেসপন্স করা GET এন্ডপয়েন্ট।

Step 4: ডাটাবেসে টেবিল তৈরি করা

এখন, SQLAlchemy মডেল অনুযায়ী ডাটাবেসে টেবিল তৈরি করা দরকার।

Base.metadata.create_all(bind=engine)

এই কোডটি ডাটাবেসে users টেবিল তৈরি করবে, যদি তা ইতিমধ্যে না থাকে।


Step 5: অ্যাপ চালানো

এখন, FastAPI অ্যাপ চালাতে নিচের কমান্ড ব্যবহার করুন:

uvicorn main:app --reload

এখানে, main হল আপনার Python ফাইলের নাম (যেমন main.py), এবং app হল FastAPI অ্যাপের অবজেক্ট।


Step 6: টেস্টিং

আপনি ব্রাউজারে Swagger UI-এ গিয়ে আপনার API টেস্ট করতে পারেন:
http://127.0.0.1:8000/docs

এখানে:

  • POST /users/: নতুন ব্যবহারকারী তৈরি করতে ব্যবহার করুন।
  • GET /users/: সব ব্যবহারকারীর তালিকা দেখতে ব্যবহার করুন।

FastAPI এবং SQLAlchemy একত্রে ব্যবহার করে আপনি খুব সহজে একটি অ্যাপ্লিকেশন তৈরি করতে পারেন যা ডাটাবেস ইন্টারঅ্যাকশন, ভ্যালিডেশন এবং API এন্ডপয়েন্টগুলোকে দ্রুত পরিচালনা করতে সহায়ক। SQLAlchemy-র ORM মডেল ব্যবহার করে ডাটাবেসের সাথে সংযোগ স্থাপন এবং FastAPI-র সাহায্যে API তৈরি করা অত্যন্ত সুবিধাজনক ও কার্যকর।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...