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 তৈরি করা অত্যন্ত সুবিধাজনক ও কার্যকর।
Read more