SQLAlchemy कोर - Conjunctions का उपयोग करना

Conjunctions SQLAlchemy मॉड्यूल में फ़ंक्शंस हैं जो SQL अभिव्यक्तियों में प्रयुक्त रिलेशनल ऑपरेटर्स को कार्यान्वित करते हैं। ऑपरेटरों और, या, नहीं, आदि, का उपयोग दो अलग-अलग तार्किक अभिव्यक्तियों को मिलाकर एक यौगिक अभिव्यक्ति बनाने के लिए किया जाता है। और SELECT स्टेटमेंट में उपयोग करने का एक सरल उदाहरण इस प्रकार है -

SELECT * from EMPLOYEE WHERE salary>10000 AND age>30

SQLAlchemy फ़ंक्शंस और_ (), or_ () और not_ () क्रमशः लागू AND, OR और NOT ऑपरेटर।

और_ () फ़ंक्शन

यह AND से जुड़कर अभिव्यक्तियों का एक संयोजन बनाता है। एक उदाहरण बेहतर समझ के लिए नीचे दिया गया है -

from sqlalchemy import and_

print(
   and_(
      students.c.name == 'Ravi',
      students.c.id <3
   )
)

यह अनुवाद -

students.name = :name_1 AND students.id < :id_1

छात्र तालिका पर एक चयन () निर्माण में and_ () का उपयोग करने के लिए, कोड की निम्नलिखित पंक्ति का उपयोग करें -

stmt = select([students]).where(and_(students.c.name == 'Ravi', students.c.id <3))

निम्नलिखित प्रकृति के चयनित कथन का निर्माण किया जाएगा -

SELECT students.id, 
   students.name, 
   students.lastname
FROM students
WHERE students.name = :name_1 AND students.id < :id_1

पूरा कोड जो उपरोक्त SELECT क्वेरी का आउटपुट प्रदर्शित करता है वह इस प्रकार है -

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey, select
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), 
)

from sqlalchemy import and_, or_
stmt = select([students]).where(and_(students.c.name == 'Ravi', students.c.id <3))
result = conn.execute(stmt)
print (result.fetchall())

निम्नलिखित पंक्ति को यह मानते हुए चुना जाएगा कि छात्रों की तालिका पिछले उदाहरण में उपयोग किए गए डेटा से आबाद है -

[(1, 'Ravi', 'Kapoor')]

या_ () फ़ंक्शन

यह OR से जुड़ने वाले भावों के संयोजन का निर्माण करता है। हम ऊपर दिए गए उदाहरण में stmt ऑब्जेक्ट को or_ () का उपयोग करते हुए प्रतिस्थापित करेंगे

stmt = select([students]).where(or_(students.c.name == 'Ravi', students.c.id <3))

जो प्रभावी रूप से चयनित क्वेरी के समतुल्य होगा -

SELECT students.id, 
   students.name, 
   students.lastname
FROM students
WHERE students.name = :name_1 
OR students.id < :id_1

एक बार जब आप प्रतिस्थापन बनाते हैं और उपरोक्त कोड चलाते हैं, तो परिणाम OR स्थिति में आने वाली दो पंक्तियाँ होंगी -

[(1, 'Ravi', 'Kapoor'),
(2, 'Rajiv', 'Khanna')]

asc () फ़ंक्शन

यह क्लाज द्वारा आरोही क्रम का उत्पादन करता है। फ़ंक्शन को पैरामीटर के रूप में फ़ंक्शन को लागू करने के लिए कॉलम लेता है।

from sqlalchemy import asc
stmt = select([students]).order_by(asc(students.c.name))

एसक्यूएल अभिव्यक्ति के बाद कथन लागू होता है -

SELECT students.id, 
   students.name, 
   students.lastname
FROM students 
ORDER BY students.name ASC

निम्नलिखित कोड छात्रों के नाम स्तंभ के आरोही क्रम में तालिका के सभी रिकॉर्ड को सूचीबद्ध करता है -

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey, select
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), 
)

from sqlalchemy import asc
stmt = select([students]).order_by(asc(students.c.name))
result = conn.execute(stmt)

for row in result:
   print (row)

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

(4, 'Abdul', 'Sattar')
(3, 'Komal', 'Bhandari')
(5, 'Priya', 'Rajhans')
(2, 'Rajiv', 'Khanna')
(1, 'Ravi', 'Kapoor')

desc () फ़ंक्शन

इसी प्रकार desc () फंक्शन अवरोही ORDER BY क्लॉज को निम्न प्रकार से उत्पन्न करता है -

from sqlalchemy import desc
stmt = select([students]).order_by(desc(students.c.lastname))

समकक्ष SQL अभिव्यक्ति है -

SELECT students.id, 
   students.name, 
   students.lastname
FROM students 
ORDER BY students.lastname DESC

और कोड की उपरोक्त लाइनों के लिए आउटपुट है -

(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')
(2, 'Rajiv', 'Khanna')
(1, 'Ravi', 'Kapoor')
(3, 'Komal', 'Bhandari')

() फ़ंक्शन के बीच

यह एक BETWEEN विधेय खंड का उत्पादन करता है। यह आम तौर पर मान्य करने के लिए उपयोग किया जाता है यदि किसी निश्चित स्तंभ का मान किसी श्रेणी के बीच आता है। उदाहरण के लिए, निम्नलिखित कोड पंक्तियों का चयन करता है जिसके लिए आईडी कॉलम 2 और 4 के बीच है -

from sqlalchemy import between
stmt = select([students]).where(between(students.c.id,2,4))
print (stmt)

परिणामस्वरूप SQL अभिव्यक्ति जैसा दिखता है -

SELECT students.id, 
   students.name, 
   students.lastname
FROM students
WHERE students.id 
BETWEEN :id_1 AND :id_2

और परिणाम इस प्रकार है -

(2, 'Rajiv', 'Khanna')
(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')