सामान्य संबंध संचालक

इस अध्याय में, हम उन ऑपरेटरों के बारे में चर्चा करेंगे जो रिश्तों पर निर्माण करते हैं।

__eq __ ()

उपरोक्त ऑपरेटर कई-से-एक "बराबर" तुलना है। इस ऑपरेटर के लिए कोड की रेखा नीचे दी गई है -

s = session.query(Customer).filter(Invoice.invno.__eq__(12))

कोड की उपरोक्त पंक्ति के लिए समकक्ष SQL क्वेरी है -

SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers, invoices
WHERE invoices.invno = ?

__ne __ ()

यह ऑपरेटर कई-से-एक "तुलना नहीं" के बराबर है। इस ऑपरेटर के लिए कोड की रेखा नीचे दी गई है -

s = session.query(Customer).filter(Invoice.custid.__ne__(2))

कोड की उपरोक्त लाइन के लिए समकक्ष SQL क्वेरी नीचे दी गई है -

SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers, invoices
WHERE invoices.custid != ?

शामिल ()

इस ऑपरेटर का उपयोग एक-से-कई संग्रहों के लिए किया जाता है और नीचे दिए गए कोड शामिल हैं () -

s = session.query(Invoice).filter(Invoice.invno.contains([3,4,5]))

कोड की उपरोक्त पंक्ति के लिए समकक्ष SQL क्वेरी है -

SELECT invoices.id 
AS invoices_id, invoices.custid 
AS invoices_custid, invoices.invno 
AS invoices_invno, invoices.amount 
AS invoices_amount
FROM invoices
WHERE (invoices.invno LIKE '%' + ? || '%')

कोई भी()

किसी भी () ऑपरेटर का उपयोग संग्रह के लिए किया जाता है जैसा कि नीचे दिखाया गया है -

s = session.query(Customer).filter(Customer.invoices.any(Invoice.invno==11))

कोड की उपरोक्त लाइन के लिए समकक्ष SQL क्वेरी नीचे दिखाई गई है -

SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers
WHERE EXISTS (
   SELECT 1
   FROM invoices
   WHERE customers.id = invoices.custid 
   AND invoices.invno = ?)

(है)

इस ऑपरेटर का उपयोग स्केलर संदर्भों के लिए किया जाता है -

s = session.query(Invoice).filter(Invoice.customer.has(name = 'Arjun Pandit'))

कोड की उपरोक्त पंक्ति के लिए समकक्ष SQL क्वेरी है -

SELECT invoices.id 
AS invoices_id, invoices.custid 
AS invoices_custid, invoices.invno 
AS invoices_invno, invoices.amount 
AS invoices_amount
FROM invoices
WHERE EXISTS (
   SELECT 1
   FROM customers
   WHERE customers.id = invoices.custid 
   AND customers.name = ?)