Python Academy · पाठ

संबंध और जॉइन

संबंधित तालिकाओं का मॉडल बनाएँ

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

संबंध और जॉइन, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

संबंधित तालिकाएँ

वास्तविक डेटा आपस में जुड़ा होता है: एक लेखक की कई पुस्तकें हो सकती हैं और एक ऑर्डर में कई वस्तुएँ हो सकती हैं। SQLAlchemy इन कड़ियों को संबंधों और विदेशी कुंजियों के माध्यम से मॉडल करता है।

# Author 1 --- many --- Book
# A foreign key on Book points back to Author
print('One-to-many is the most common link')

विदेशी कुंजियाँ

एक विदेशी कुंजी कॉलम संबंधित पंक्ति की प्राथमिक कुंजी संग्रहीत करता है। इसे ForeignKey('table.column') से घोषित करें।

from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
# author_id: Mapped[int] = mapped_column(ForeignKey('authors.id'))
print('ForeignKey links child to parent')

पैरेंट निर्धारित करना

पैरेंट मॉडल बच्चों के संग्रह को रखने के लिए relationship() का उपयोग करता है।

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
from typing import List
class Base(DeclarativeBase):
    pass
class Author(Base):
    __tablename__ = 'authors'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
    books: Mapped[List['Book']] = relationship(back_populates='author')
print('Author.books holds related Book objects')

चाइल्ड निर्धारित करना

चाइल्ड मॉडल में विदेशी कुंजी वाला कॉलम और पैरेंट की ओर वापस संकेत करने वाला relationship() होता है।

from sqlalchemy import ForeignKey
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
class Base(DeclarativeBase):
    pass
class Book(Base):
    __tablename__ = 'books'
    id: Mapped[int] = mapped_column(primary_key=True)
    title: Mapped[str]
    author_id: Mapped[int] = mapped_column(ForeignKey('authors.id'))
    author: Mapped['Author'] = relationship(back_populates='books')
print('Book.author points to its parent')

back_populates

back_populates दोनों संबंधों को आपस में जोड़ता है, ताकि एक ओर किया गया बदलाव दूसरी ओर अपने-आप दिखाई दे।

# author.books.append(book) also sets book.author = author
# Both sides stay in sync automatically
print('back_populates keeps both sides consistent')

संबंधों में जाना

एक बार जोड़ने के बाद, आप संबंधों में सामान्य विशेषताओं की तरह जा सकते हैं: author.books एक सूची है और book.author पैरेंट ऑब्जेक्ट है।

# for book in author.books:
#     print(book.title)
# print(book.author.name)
print('Navigate with plain attribute access')

ग्राफ़ बनाना

बच्चों को पैरेंट के संग्रह में append करें। पैरेंट को सेशन में जोड़ने पर बच्चे भी अपने-आप उसके साथ जुड़ जाते हैं।

# a = Author(name='Rowling')
# a.books.append(Book(title='Book 1'))
# session.add(a)
# session.commit()  # author and book both saved
print('Cascade saves the whole object graph')

अप्रत्यक्ष JOIN

book.author तक पहुँचने पर SQLAlchemy पर्दे के पीछे संबंधित पंक्ति को अपने-आप लोड करता है। इसे आलसी लोडिंग कहते हैं।

# Accessing book.author runs a SELECT if not loaded yet
# This is lazy loading
print('Lazy loading fetches related rows on access')

स्पष्ट JOIN

तालिकाओं के बीच फ़िल्टर करने के लिए select में join() का उपयोग करें। इससे SQL JOIN बनता है।

from sqlalchemy import select
# stmt = select(Book).join(Author).where(Author.name == 'Rowling')
# books = session.scalars(stmt).all()
print('join(Author) filters across the relationship')

अग्रिम लोडिंग

कई छोटी क्वेरी से बचने के लिए संबंधित पंक्तियों को पहले ही joinedload या selectinload से लोड करें।

from sqlalchemy import select
from sqlalchemy.orm import selectinload
# stmt = select(Author).options(selectinload(Author.books))
print('selectinload preloads children in one extra query')

अनेक-से-अनेक संबंध

अनेक-से-अनेक कड़ियों के लिए एक संबंध तालिका दोनों पक्षों को जोड़ती है। relationship() इसे दर्शाने के लिए secondary= का उपयोग करता है।

# students <-> courses via a 'enrollments' association table
# courses: Mapped[List['Course']] = relationship(secondary=enrollments)
print('secondary= models many-to-many')

त्वरित जाँच

संबंधों से जुड़े अपने ज्ञान की जाँच करें।

पुनरावलोकन

आपने संबंधित तालिकाओं का मॉडल बनाया।

  • ForeignKey चाइल्ड के कॉलम में संबंध संग्रहीत करता है
  • relationship() और back_populates दोनों पक्षों को जोड़ते हैं
  • कड़ियों में सामान्य विशेषताओं की तरह जाएँ; आलसी लोडिंग पहुँचने पर डेटा प्राप्त करती है
  • join() तालिकाओं के बीच फ़िल्टर करता है; selectinload अग्रिम रूप से लोड करता है; secondary= अनेक-से-अनेक संबंध संभालता है
शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

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

पाठ्यक्रम
76
पाठ
320

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

क्या “संबंध और जॉइन” पाठ निःशुल्क है?

हाँ—“संबंध और जॉइन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“संबंध और जॉइन” में मैं क्या सीखूँगा?

संबंधित तालिकाओं का मॉडल बनाएँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“संबंध और जॉइन” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. SQLAlchemy Core बनाम ORM
  2. मॉडल परिभाषित करना
  3. Session से क्वेरी करना
  4. संबंध और जॉइन
← Python Academy पर वापस जाएँ