Opérateurs de relations communes

Dans ce chapitre, nous discuterons des opérateurs qui s'appuient sur des relations.

__eq __ ()

L'opérateur ci-dessus est une comparaison «égale» plusieurs à un. La ligne de code pour cet opérateur est comme indiqué ci-dessous -

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

La requête SQL équivalente pour la ligne de code ci-dessus est -

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 __ ()

Cet opérateur est une comparaison plusieurs-à-un «pas égal». La ligne de code pour cet opérateur est comme indiqué ci-dessous -

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

La requête SQL équivalente pour la ligne de code ci-dessus est donnée ci-dessous -

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 != ?

contient ()

Cet opérateur est utilisé pour les collections un-à-plusieurs et est donné ci-dessous le code pour contains () -

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

La requête SQL équivalente pour la ligne de code ci-dessus est -

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 '%' + ? || '%')

tout()

any () opérateur est utilisé pour les collections comme indiqué ci-dessous -

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

La requête SQL équivalente pour la ligne de code ci-dessus est indiquée ci-dessous -

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 = ?)

a()

Cet opérateur est utilisé pour les références scalaires comme suit -

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

La requête SQL équivalente pour la ligne de code ci-dessus est -

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 = ?)