asyncpg – PostgreSQL के लिए एसिंक्रोनस क्लाइंट

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

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

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

परिचय

FastAPI और Starlette जैसे एसिंक्रोनस वेब फ्रेमवर्क की बढ़ती लोकप्रियता के साथ, डेटाबेस से तेज़ और नॉन-ब्लॉकिंग तरीके से जुड़ने की ज़रूरत बढ़ गई है। asyncpg PostgreSQL के लिए एक एसिंक्रोनस क्लाइंट है, जिसे अधिकतम परफॉरमेंस के लिए शुरू से डिज़ाइन किया गया है।

asyncpg async/await शैली में PostgreSQL के साथ काम करने का एक लो-लेवल, तेज़ और कुशल तरीका प्रदान करता है, जो इसे आधुनिक Python ऐप्लिकेशन के लिए एक बेहतरीन विकल्प बनाता है। यह लाइब्रेरी Python और Cython में लिखी गई है, जो ऑपरेशन की उच्च गति और न्यूनतम ओवरहेड सुनिश्चित करती है।

asyncpg क्या है

asyncpg Python के लिए एक पूर्ण-विशेषताओं वाला एसिंक्रोनस PostgreSQL ड्राइवर है, जो ORM का उपयोग किए बिना डेटाबेस के साथ सीधा इंटरैक्शन प्रदान करता है। यह लाइब्रेरी PostgreSQL की सभी आधुनिक सुविधाओं का समर्थन करती है, जिसमें JSON, UUID, ऐरे, कस्टम डेटा टाइप और उन्नत फंक्शन शामिल हैं।

asyncpg के मुख्य लाभ:

  • asyncio के साथ पूर्ण एसिंक्रोनस सपोर्ट
  • Cython के उपयोग से उच्च परफॉरमेंस
  • सभी PostgreSQL डेटा टाइप का नेटिव सपोर्ट
  • कनेक्शन पूल का बिल्ट-इन सपोर्ट
  • SQL इंजेक्शन से सुरक्षा
  • एसिंक्रोनस फ्रेमवर्क के साथ आसान इंटीग्रेशन

इंस्टॉलेशन और शुरुआती सेटअप

सिस्टम आवश्यकताएँ

asyncpg के साथ काम करने के लिए आवश्यक:

  • Python 3.7 या उससे ऊपर
  • PostgreSQL 9.5 या उससे ऊपर
  • ऑपरेटिंग सिस्टम: Linux, macOS, Windows

लाइब्रेरी इंस्टॉल करना

pip install asyncpg

डेवलपमेंट के लिए अतिरिक्त पैकेज इंस्टॉल करने की सलाह दी जाती है:

pip install asyncpg pytest-asyncio

डेटाबेस से बेसिक कनेक्शन

import asyncpg
import asyncio

async def main():
    # पैरामीटर के साथ कनेक्शन
    conn = await asyncpg.connect(
        user='postgres',
        password='secret',
        database='test_db',
        host='127.0.0.1',
        port=5432
    )
    
    # कनेक्शन की जाँच
    version = await conn.fetchval('SELECT version()')
    print(f"कनेक्टेड: {version}")
    
    await conn.close()

asyncio.run(main())

DSN के माध्यम से कनेक्शन

# कनेक्शन स्ट्रिंग का उपयोग
dsn = "postgresql://postgres:secret@127.0.0.1:5432/test_db"
conn = await asyncpg.connect(dsn)

Python में एसिंक्रोनसिटी और asyncpg की भूमिका

asyncpg async/await का उपयोग करता है और asyncio के साथ पूरी तरह से संगत है, जो PostgreSQL को नॉन-ब्लॉकिंग क्वेरी भेजने की अनुमति देता है। यह हाई-लोड ऐप्लिकेशन और API के लिए महत्वपूर्ण है, जहाँ इवेंट लूप का ब्लॉक होना परफॉरमेंस को काफी कम कर सकता है।

सिंक्रोनस ड्राइवरों से अंतर

psycopg2 के विपरीत, जो सिंक्रोनस है, asyncpg अन्य कार्यों के निष्पादन को ब्लॉक नहीं करता:

# सिंक्रोनस तरीका (psycopg2)
import psycopg2
conn = psycopg2.connect(...)  # थ्रेड को ब्लॉक करता है
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")  # थ्रेड को ब्लॉक करता है

# एसिंक्रोनस तरीका (asyncpg)
import asyncpg
conn = await asyncpg.connect(...)  # इवेंट लूप को ब्लॉक नहीं करता
rows = await conn.fetch("SELECT * FROM users")  # इवेंट लूप को ब्लॉक नहीं करता

क्वेरी का समवर्ती निष्पादन

async def concurrent_queries():
    conn = await asyncpg.connect(...)
    
    # एक साथ कई क्वेरी निष्पादित करना
    tasks = [
        conn.fetch("SELECT * FROM users"),
        conn.fetch("SELECT * FROM orders"),
        conn.fetch("SELECT * FROM products")
    ]
    
    results = await asyncio.gather(*tasks)
    return results

asyncpg के मुख्य मेथड और फंक्शन

मुख्य मेथड की तालिका

अनुशंसाएँ