परिचय
SQLAlchemy और Pydantic – Python डेवलपर के दो शक्तिशाली टूल: एक डेटाबेस के लिए, दूसरा डेटा वैलिडेशन के लिए। लेकिन इन दोनों के बीच हमेशा एक अंतर रहा है। इस समस्या का समाधान है SQLModel – Pydantic पर आधारित ORM, जो दोनों दुनिया का सर्वश्रेष्ठ प्रदान करता है।
SQLModel आपको टाइप किए गए Pydantic मॉडल को SQLAlchemy ORM टेबल के रूप में उपयोग करने की अनुमति देता है। इससे डेवलपमेंट आसान होता है, API बनाने में तेजी आती है, और डेटाबेस मॉडल और सीरियलाइज़र के बीच कोड डुप्लिकेशन खत्म होता है।
SQLModel क्या है और इसकी आवश्यकता क्यों है
SQLModel – Python के लिए एक आधुनिक ORM लाइब्रेरी है, जिसे सेबेस्टियन रामिरेज़ (FastAPI के निर्माता) ने 2021 में बनाया था। यह वेब डेवलपमेंट की एक बड़ी समस्या – डेटाबेस मॉडल और डेटा वैलिडेशन स्कीमा के बीच कोड डुप्लिकेशन – को हल करता है।
SQLModel के मुख्य लाभ
SQLModel डेवलपर्स को डेटाबेस और डेटा वैलिडेशन के लिए एक एकीकृत इंटरफ़ेस प्रदान करता है। मुख्य लाभों में शामिल हैं:
- एकीकृत डेटा मॉडल: डेटाबेस और API के लिए एक ही मॉडल
- स्वचालित वैलिडेशन: Pydantic से बिल्ट-इन डेटा वैलिडेशन
- टाइपिंग: Python टाइप्स और IDE के लिए पूर्ण सपोर्ट
- संगतता: मौजूदा SQLAlchemy प्रोजेक्ट्स के साथ काम करता है
- एसिंक्रोनस: बिल्ट-इन async/await सपोर्ट
इंस्टॉलेशन और सेटअप
बेसिक इंस्टॉलेशन
pip install sqlmodel
अतिरिक्त डिपेंडेंसी के साथ इंस्टॉलेशन
PostgreSQL के लिए:
pip install sqlmodel[postgresql]
एसिंक्रोनस काम के लिए:
pip install sqlmodel[async]
सभी डिपेंडेंसी के साथ पूर्ण इंस्टॉलेशन:
pip install "sqlmodel[postgresql,async]"
डेटाबेस से कनेक्शन
from sqlmodel import SQLModel, create_engine
# SQLite (डेवलपमेंट के लिए)
engine = create_engine("sqlite:///database.db")
# PostgreSQL
engine = create_engine("postgresql://user:password@localhost/dbname")
# MySQL
engine = create_engine("mysql+pymysql://user:password@localhost/dbname")
SQLModel के साथ बुनियादी काम
बेसिक मॉडल बनाना
from sqlmodel import SQLModel, Field
from typing import Optional
class User(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str = Field(index=True)
email: str = Field(unique=True)
age: int = Field(ge=0, le=150)
is_active: bool = Field(default=True)
Field पैरामीटर
SQLModel अतिरिक्त सुविधाओं के साथ Pydantic के विस्तारित Field का उपयोग करता है:
class Product(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str = Field(max_length=100, index=True)
price: float = Field(gt=0, description="उत्पाद की कीमत")
category_id: int = Field(foreign_key="category.id")
created_at: datetime = Field(default_factory=datetime.now)
डेटाबेस में टेबल बनाना
from sqlmodel import SQLModel, create_engine
engine = create_engine("sqlite:///database.db")
# सभी टेबल बनाएं
SQLModel.metadata.create_all(engine)
# विशिष्ट टेबल बनाएं
User.metadata.create_all(engine)
SQLModel के साथ CRUD ऑपरेशन
रिकॉर्ड बनाना
from sqlmodel import Session
# एक रिकॉर्ड बनाएं
user = User(name="राहुल", email="rahul@example.com", age=25)
with Session(engine) as session:
session.add(user)
session.commit()
session.refresh(user) # डेटाबेस से ID प्राप्त करें
print(f"बनाया गया")