- SQLAlchemy 教程
- SQLAlchemy - 首頁
- SQLAlchemy - 簡介
- SQLAlchemy核心
- 表示式語言
- 連線資料庫
- 建立表
- SQL表示式
- 執行表示式
- 選擇行
- 使用文字SQL
- 使用別名
- 使用UPDATE表示式
- 使用DELETE表示式
- 使用多個表
- 使用多表更新
- 引數有序更新
- 多表刪除
- 使用連線
- 使用連線詞
- 使用函式
- 使用集合操作
- SQLAlchemy ORM
- 宣告對映
- 建立會話
- 新增物件
- 使用Query
- 更新物件
- 應用過濾器
- 過濾器運算子
- 返回列表和標量
- 文字SQL
- 構建關係
- 處理相關物件
- 使用連線
- 常用關係運算符
- 提前載入
- 刪除相關物件
- 多對多關係
- 方言
- SQLAlchemy有用資源
- SQLAlchemy - 快速指南
- SQLAlchemy - 有用資源
- SQLAlchemy - 討論
常用關係運算符
本章將討論構建關係的運算子。
__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 != ?
contains()
此運算子用於一對多集合,以下是contains()的程式碼:
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 '%' + ? || '%')
any()
any()運算子用於集合,如下所示:
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 = ?)
has()
此運算子用於標量引用,如下所示:
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 = ?)
廣告