SQLAlchemy कोर - जोड़ों का उपयोग करना

इस अध्याय में, हम सीखेंगे कि SQLAlchemy में Joins का उपयोग कैसे करें।

ज्वाइनिंग का प्रभाव केवल दो तालिकाओं को रखने से प्राप्त होता है columns clause या where clauseका चयन करें () निर्माण। अब हम join () और आउटरजॉइन () मेथड्स का उपयोग करते हैं।

ज्वाइन () विधि एक टेबल ऑब्जेक्ट से दूसरे में ज्वाइन ऑब्जेक्ट लौटाता है।

join(right, onclause = None, isouter = False, full = False)

उपरोक्त कोड में उल्लिखित मापदंडों के कार्य निम्नानुसार हैं -

  • right- सम्मिलित होने के दाईं ओर; यह किसी भी टेबल ऑब्जेक्ट है

  • onclause- एक एसक्यूएल अभिव्यक्ति में शामिल होने के खंड पर प्रतिनिधित्व। यदि किसी को भी नहीं छोड़ा गया है, तो यह विदेशी कुंजी संबंध के आधार पर दो तालिकाओं में शामिल होने का प्रयास करता है

  • isouter - अगर सही है, जोइन के बजाय एक बाईं ओर जॉय प्रस्तुत करता है

  • full - अगर सच है, तो लेफ्टिनेंट ओस्टर जॉइन के बजाय एक पूर्ण OOO JOIN प्रस्तुत करता है

उदाहरण के लिए, ज्वाइन () विधि का उपयोग करने पर विदेशी कुंजी के आधार पर स्वचालित रूप से जॉइन हो जाएगा।

>>> print(students.join(addresses))

यह एसक्यूएल अभिव्यक्ति के समतुल्य है -

students JOIN addresses ON students.id = addresses.st_id

आप स्पष्ट रूप से निम्न मानदंड में शामिल होने का उल्लेख कर सकते हैं -

j = students.join(addresses, students.c.id == addresses.c.st_id)

यदि हम अब इस प्रकार का उपयोग करते हुए नीचे दिए गए निर्माण का निर्माण करते हैं -

stmt = select([students]).select_from(j)

यह SQL अभिव्यक्ति के बाद परिणाम देगा -

SELECT students.id, students.name, students.lastname
FROM students JOIN addresses ON students.id = addresses.st_id

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey
engine = create_engine('sqlite:///college.db', echo = True)

meta = MetaData()
conn = engine.connect()
students = Table(
   'students', meta, 
   Column('id', Integer, primary_key = True), 
   Column('name', String), 
   Column('lastname', String), 
)

addresses = Table(
   'addresses', meta, 
   Column('id', Integer, primary_key = True), 
   Column('st_id', Integer,ForeignKey('students.id')), 
   Column('postal_add', String), 
   Column('email_add', String)
)

from sqlalchemy import join
from sqlalchemy.sql import select
j = students.join(addresses, students.c.id == addresses.c.st_id)
stmt = select([students]).select_from(j)
result = conn.execute(stmt)
result.fetchall()

उपरोक्त कोड का आउटपुट निम्न है -

[
   (1, 'Ravi', 'Kapoor'),
   (1, 'Ravi', 'Kapoor'),
   (3, 'Komal', 'Bhandari'),
   (5, 'Priya', 'Rajhans'),
   (2, 'Rajiv', 'Khanna')
]