SQLModel – Pydantic आधारित ORM (पाइथन डेटाबेस लाइब्रेरी)

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय

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"बनाया गया")                    

अनुशंसाएँ