Operatori di relazione comuni
In questo capitolo discuteremo degli operatori che si basano sulle relazioni.
__eq __ ()
L'operatore sopra è un confronto "uguale" molti a uno. La riga di codice per questo operatore è come mostrato di seguito:
s = session.query(Customer).filter(Invoice.invno.__eq__(12)) 
    La query SQL equivalente per la riga di codice precedente è:
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 __ ()
Questo operatore è un confronto molti a uno "non uguale". La riga di codice per questo operatore è come mostrato di seguito:
s = session.query(Customer).filter(Invoice.custid.__ne__(2)) 
    La query SQL equivalente per la riga di codice precedente è fornita di seguito:
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 != ? 
    contiene ()
Questo operatore viene utilizzato per raccolte uno-a-molti e di seguito viene fornito il codice per contiene () -
s = session.query(Invoice).filter(Invoice.invno.contains([3,4,5])) 
    La query SQL equivalente per la riga di codice precedente è:
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 '%' + ? || '%') 
    qualunque()
L'operatore any () viene utilizzato per le raccolte come mostrato di seguito:
s = session.query(Customer).filter(Customer.invoices.any(Invoice.invno==11)) 
    La query SQL equivalente per la riga di codice sopra è mostrata di seguito:
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 = ?) 
    ha ()
Questo operatore viene utilizzato per i riferimenti scalari come segue:
s = session.query(Invoice).filter(Invoice.customer.has(name = 'Arjun Pandit')) 
    La query SQL equivalente per la riga di codice precedente è:
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 = ?)