Các nhà điều hành mối quan hệ chung
Trong chương này, chúng ta sẽ thảo luận về các toán tử xây dựng trên các mối quan hệ.
__eq __ ()
Toán tử trên là một so sánh nhiều-một "bằng". Dòng mã cho toán tử này như được hiển thị bên dưới:
s = session.query(Customer).filter(Invoice.invno.__eq__(12))
Truy vấn SQL tương đương cho dòng mã trên là:
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 __ ()
Toán tử này là một so sánh nhiều-một "không bằng". Dòng mã cho toán tử này như được hiển thị bên dưới:
s = session.query(Customer).filter(Invoice.custid.__ne__(2))
Truy vấn SQL tương đương cho dòng mã trên được đưa ra bên dưới:
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 != ?
chứa đựng()
Toán tử này được sử dụng cho một-nhiều tập hợp và dưới đây là mã cho hàm chứa () -
s = session.query(Invoice).filter(Invoice.invno.contains([3,4,5]))
Truy vấn SQL tương đương cho dòng mã trên là:
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 '%' + ? || '%')
bất kì()
bất kỳ () toán tử nào được sử dụng cho các tập hợp như được hiển thị bên dưới:
s = session.query(Customer).filter(Customer.invoices.any(Invoice.invno==11))
Truy vấn SQL tương đương cho dòng mã trên được hiển thị bên dưới:
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 = ?)
có ()
Toán tử này được sử dụng cho các tham chiếu vô hướng như sau:
s = session.query(Invoice).filter(Invoice.customer.has(name = 'Arjun Pandit'))
Truy vấn SQL tương đương cho dòng mã trên là:
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 = ?)