FastAPI बैकएंड डेवलपमेंट बूटकैंप · पाठ

अतुल्यकालिक डेटाबेस पहुँच

गैर-अवरोधक डेटाबेस संचालन के लिए `asyncpg` और `SQLModel` जैसी अतुल्यकालिक डेटाबेस ड्राइवर और ORM का अध्ययन करें।

पाठ 2, कुल 4 में से11 चरण

अतुल्यकालिक डेटाबेस पहुँच, CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

असमकालिक डेटाबेस पहुँच क्यों?

उच्च-प्रदर्शन वाले वेब एप्लिकेशन बनाते समय, विशेष रूप से FastAPI जैसे फ्रेमवर्क के साथ, डेटाबेस संचालन अक्सर बाधा बन सकते हैं। पारंपरिक डेटाबेस कॉल "अवरोधक" होते हैं, अर्थात आपका एप्लिकेशन आगे बढ़ने से पहले डेटाबेस की प्रतिक्रिया की प्रतीक्षा करता है।

असमकालिक डेटाबेस पहुँच आपके एप्लिकेशन को डेटाबेस की प्रतीक्षा करते समय अन्य कार्य करने देती है, जिससे अत्यधिक लोड के दौरान आपका API अनुत्तरदायी होने से बचता है। विस्तारक्षमता के लिए यह अत्यंत महत्वपूर्ण है!

समकालिक बनाम असमकालिक डेटाबेस कॉल

एक ऐसे रेस्तराँ की कल्पना कीजिए जहाँ एक ही रसोइया सब कुछ संभालता है। यदि कोई ग्राहक जटिल व्यंजन (डेटाबेस क्वेरी) मँगाता है, तो रसोइया वह व्यंजन तैयार होने तक बाकी सभी काम रोक देता है। यह समकालिक I/O है।

असमकालिक व्यवस्था में, रसोइया जटिल व्यंजन बनाना शुरू करता है और फिर तुरंत सरल व्यंजन तैयार करने या नए ऑर्डर लेने लगता है, जबकि जटिल व्यंजन पृष्ठभूमि में पकता रहता है। जटिल व्यंजन तैयार होने पर रसोइया उसे ले लेता है। यह गैर-अवरोधक तरीका दक्षता बढ़ाता है!

asyncpg से परिचय: असमकालिक ड्राइवर

PostgreSQL के लिए Python में सबसे अधिक उपयोग किया जाने वाला असमकालिक ड्राइवर asyncpg है। यह विशेष रूप से Python के asyncio फ्रेमवर्क के साथ काम करने के लिए बनाया गया उच्च-प्रदर्शन वाला पुस्तकालय है।

  • तेज़: गति के लिए इसका कुछ भाग C में लिखा गया है।
  • असमकालिक: पूरी तरह गैर-अवरोधक।
  • प्रत्यक्ष: PostgreSQL के लिए प्रत्यक्ष इंटरफ़ेस उपलब्ध कराता है।

इसे अक्सर असमकालिक ORM के अंतर्निहित ड्राइवर के रूप में या सूक्ष्म स्तर पर नियंत्रण की आवश्यकता होने पर उपयोग किया जाता है।

asyncpg का व्यवहारिक उपयोग

आइए देखें कि asyncpg का उपयोग करके PostgreSQL डेटाबेस से कनेक्ट करने और एक सरल क्वेरी चलाने का बुनियादी उदाहरण कैसे बनाया जाता है। अपने क्रेडेंशियल के स्थान पर वास्तविक क्रेडेंशियल रखना याद रखें!

import asyncio
import asyncpg

async def main():
    conn = None
    try:
        conn = await asyncpg.connect(user='postgres', password='mysecretpassword',
                                     database='testdb', host='localhost')
        print("Connected to PostgreSQL!")
        
        # Execute a query
        result = await conn.fetchval('SELECT 1 + 1')
        print(f"Query result: {result}") # Should be 2
        
    except Exception as e:
        print(f"Error: {e}")
    finally:
        if conn:
            await conn.close()
            print("Connection closed.")

if __name__ == "__main__":
    asyncio.run(main())

डेटाबेस कॉल की प्रतीक्षा करना

पिछले उदाहरण में आपने asyncpg.connect() और conn.fetchval() से पहले await कीवर्ड देखा था। असमकालिक संचालन के लिए यह अत्यंत महत्वपूर्ण है।

  • await Python को बताता है: "इस संचालन में समय लग सकता है, इसलिए यहाँ रुकें और इस बीच अन्य कार्यों को चलने दें।"
  • डेटाबेस संचालन पूरा होने पर, कार्य वहीं से फिर शुरू होता है जहाँ वह रुका था।
  • यही गैर-अवरोधक प्रतीक्षा आपके FastAPI एप्लिकेशन को विस्तारयोग्य बनाती है।

SQLModel: असमकालिक ORM की शक्ति

जहाँ asyncpg आपको निम्न-स्तरीय नियंत्रण देता है, वहीं ऑब्जेक्ट रिलेशनल मैपर (ORM) डेटाबेस तालिकाओं को Python ऑब्जेक्ट में मैप करके डेटाबेस के साथ होने वाली क्रियाओं को सरल बनाता है। SQLModel एक आधुनिक, असमकालिकता-प्रथम ORM है, जो इन पर आधारित है:

  • Pydantic: डेटा सत्यापन और क्रमबद्धीकरण के लिए।
  • SQLAlchemy: शक्तिशाली और परिपक्व Python SQL टूलकिट।

यह आपको मॉडल को एक बार परिभाषित करके उन्हें अपने API अनुरोध/प्रतिक्रिया और डेटाबेस स्कीमा, दोनों के लिए उपयोग करने देता है!

असमकालिक उपयोग के लिए SQLModel सेट अप करना

SQLModel का असमकालिक रूप से उपयोग करने के लिए, आपको एक असमकालिक डेटाबेस इंजन की आवश्यकता होती है। इसमें आम तौर पर asyncpg जैसे असमकालिक ड्राइवर का उपयोग किया जाता है (जिसे SQLAlchemy asyncio के माध्यम से उपयोग कर सकता है)। इंजन सेट अप करने का तरीका यहाँ दिया गया है:

from sqlmodel import create_engine, SQLModel
import asyncio

# Replace with your actual async PostgreSQL connection string
# The 'postgresql+asyncpg' part tells SQLAlchemy to use asyncpg
DATABASE_URL = "postgresql+asyncpg://postgres:mysecretpassword@localhost/testdb"

async def main():
    engine = create_engine(DATABASE_URL, echo=True)
    print("Async SQLModel engine created.")
    
    # In a real app, you'd usually create tables here
    # async with engine.begin() as conn:
    #     await conn.run_sync(SQLModel.metadata.create_all)
    
    # Just demonstrating engine creation for this example
    await engine.dispose()
    print("Engine disposed.")

if __name__ == "__main__":
    asyncio.run(main())

आपका पहला SQLModel

SQLModel में मॉडल परिभाषित करना बहुत सहज है। आप SQLModel से इनहेरिट करते हैं और Pydantic-जैसी फ़ील्ड घोषणाओं का उपयोग करते हैं। यह एकल परिभाषा आपके डेटाबेस तालिका का स्कीमा और आपके API का डेटा सत्यापन स्कीमा, दोनों बनाती है!

from typing import Optional
from sqlmodel import Field, SQLModel

class Hero(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str = Field(index=True)
    secret_name: str
    age: Optional[int] = Field(default=None, index=True)

# This model can now be used with FastAPI for request bodies
# and with SQLAlchemy for database interactions.
print("Hero model defined successfully!")

SQLModel के साथ असमकालिक CRUD

अब हम अपने Hero मॉडल और असमकालिक इंजन का उपयोग करके एक सरल निर्माण और पठन संचालन करेंगे। डेटाबेस के साथ क्रियाओं के लिए हम SQLAlchemy के ORM से AsyncSession का उपयोग करेंगे।

from typing import Optional
from sqlmodel import Field, SQLModel, create_engine, Session, select
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker
import asyncio

DATABASE_URL = "postgresql+asyncpg://postgres:mysecretpassword@localhost/testdb"
async_engine = create_async_engine(DATABASE_URL, echo=False)
AsyncSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=async_engine, class_=AsyncSession)

class Hero(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str = Field(index=True)
    secret_name: str
    age: Optional[int] = Field(default=None, index=True)

async def create_db_and_tables():
    async with async_engine.begin() as conn:
        await conn.run_sync(SQLModel.metadata.create_all)
    print("Database tables created/updated.")

async def create_hero(hero: Hero):
    async with AsyncSessionLocal() as session:
        session.add(hero)
        await session.commit()
        await session.refresh(hero)
        print(f"Created hero: {hero.name} (ID: {hero.id})")
        return hero

async def get_heroes():
    async with AsyncSessionLocal() as session:
        statement = select(Hero)
        results = await session.execute(statement)
        heroes = results.scalars().all()
        print("\nAll Heroes:")
        for hero in heroes:
            print(f"- {hero.name} (Age: {hero.age})")
        return heroes

async def main():
    await create_db_and_tables()

    hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson", age=28)
    hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador")
    hero_3 = Hero(name="Rusty-Man", secret_name="Tommy Sharp", age=48)

    await create_hero(hero_1)
    await create_hero(hero_2)
    await create_hero(hero_3)

    await get_heroes()
    await async_engine.dispose()

if __name__ == "__main__":
    asyncio.run(main())

असमकालिक डेटाबेस जाँच

आपने असमकालिक डेटाबेस पहुँच के महत्व के बारे में सीखा और asyncpg तथा SQLModel जैसे टूल का अध्ययन किया। आइए अपनी समझ का परीक्षण करें!

पुनरावृत्ति: विस्तारक्षमता के लिए असमकालिक डेटाबेस

बहुत अच्छा! आपने सफलतापूर्वक असमकालिक डेटाबेस पहुँच का अध्ययन किया है।

  • हमने समझा कि उच्च-प्रदर्शन वाले FastAPI ऐप के लिए गैर-अवरोधक I/O क्यों आवश्यक है।
  • हमने asyncpg को निम्न-स्तरीय असमकालिक PostgreSQL ड्राइवर के रूप में जाना।
  • हमने SQLModel के बारे में सीखा, जो Pydantic और SQLAlchemy को मिलाने वाला असमकालिकता-प्रथम ORM है।
  • हमने इन टूल के साथ CRUD संचालन सेट अप करने और करने के व्यावहारिक उदाहरण देखे।

असमकालिक डेटाबेस क्रियाओं में दक्षता प्राप्त करना वास्तव में विस्तारयोग्य और प्रतिक्रियाशील बैकएंड सेवाएँ बनाने की दिशा में एक महत्वपूर्ण कदम है!

शुरुआत निःशुल्क

एआई शिक्षक के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
21
पाठ
84

अक्सर पूछे जाने वाले प्रश्न

क्या “अतुल्यकालिक डेटाबेस पहुँच” पाठ निःशुल्क है?

हाँ — FastAPI बैकएंड डेवलपमेंट बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “अतुल्यकालिक डेटाबेस पहुँच” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“अतुल्यकालिक डेटाबेस पहुँच” में मैं क्या सीखूँगा?

गैर-अवरोधक डेटाबेस संचालन के लिए `asyncpg` और `SQLModel` जैसी अतुल्यकालिक डेटाबेस ड्राइवर और ORM का अध्ययन करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“अतुल्यकालिक डेटाबेस पहुँच” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Redis के साथ कैशिंग रणनीतियाँ
  2. अतुल्यकालिक डेटाबेस पहुँच
  3. लोड संतुलन और निगरानी
  4. बैकग्राउंड टास्क और जॉब कतारें
← FastAPI बैकएंड डेवलपमेंट बूटकैंप पर वापस जाएँ