SQLAlchemy ORM - Toán tử bộ lọc
Bây giờ, chúng ta sẽ tìm hiểu các hoạt động của bộ lọc với các mã và đầu ra tương ứng của chúng.
Bằng
Toán tử thông thường được sử dụng là == và nó áp dụng các tiêu chí để kiểm tra sự bình đẳng.
result = session.query(Customers).filter(Customers.id == 2)
for row in result:
print ("ID:", row.id, "Name: ",row.name, "Address:",row.address, "Email:",row.email)
SQLAlchemy sẽ gửi biểu thức SQL sau:
SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
WHERE customers.id = ?
Đầu ra cho đoạn mã trên như sau:
ID: 2 Name: Komal Pande Address: Banjara Hills Secunderabad Email: [email protected]
Không bằng
Toán tử được sử dụng cho không bằng là! = Và nó cung cấp tiêu chí không bằng.
result = session.query(Customers).filter(Customers.id! = 2)
for row in result:
print ("ID:", row.id, "Name: ",row.name, "Address:",row.address, "Email:",row.email)
Biểu thức SQL kết quả là:
SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
WHERE customers.id != ?
Đầu ra cho các dòng mã trên như sau:
ID: 1 Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]
ID: 3 Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
ID: 4 Name: S.M.Krishna Address: Budhwar Peth, Pune Email: [email protected]
Giống
Phương thức like () tự tạo ra tiêu chí LIKE cho mệnh đề WHERE trong biểu thức SELECT.
result = session.query(Customers).filter(Customers.name.like('Ra%'))
for row in result:
print ("ID:", row.id, "Name: ",row.name, "Address:",row.address, "Email:",row.email)
Mã SQLAlchemy ở trên tương đương với biểu thức SQL sau:
SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
WHERE customers.name LIKE ?
Và đầu ra cho đoạn mã trên là -
ID: 1 Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]
ID: 3 Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
TRONG
Toán tử này kiểm tra xem giá trị cột có thuộc tập hợp các mục trong danh sách hay không. Nó được cung cấp bởi phương thức in_ ().
result = session.query(Customers).filter(Customers.id.in_([1,3]))
for row in result:
print ("ID:", row.id, "Name: ",row.name, "Address:",row.address, "Email:",row.email)
Ở đây, biểu thức SQL được đánh giá bởi SQLite engine sẽ như sau:
SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
WHERE customers.id IN (?, ?)
Đầu ra cho đoạn mã trên như sau:
ID: 1 Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]
ID: 3 Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
VÀ
Sự kết hợp này được tạo ra bởi putting multiple commas separated criteria in the filter or using and_() method như dưới đây -
result = session.query(Customers).filter(Customers.id>2, Customers.name.like('Ra%'))
for row in result:
print ("ID:", row.id, "Name: ",row.name, "Address:",row.address, "Email:",row.email)
from sqlalchemy import and_
result = session.query(Customers).filter(and_(Customers.id>2, Customers.name.like('Ra%')))
for row in result:
print ("ID:", row.id, "Name: ",row.name, "Address:",row.address, "Email:",row.email)
Cả hai phương pháp trên đều dẫn đến biểu thức SQL tương tự:
SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
WHERE customers.id > ? AND customers.name LIKE ?
Đầu ra cho các dòng mã trên là -
ID: 3 Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
HOẶC LÀ
Sự kết hợp này được thực hiện bởi or_() method.
from sqlalchemy import or_
result = session.query(Customers).filter(or_(Customers.id>2, Customers.name.like('Ra%')))
for row in result:
print ("ID:", row.id, "Name: ",row.name, "Address:",row.address, "Email:",row.email)
Kết quả là, công cụ SQLite nhận được biểu thức SQL tương đương sau:
SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
WHERE customers.id > ? OR customers.name LIKE ?
Đầu ra cho đoạn mã trên như sau:
ID: 1 Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]
ID: 3 Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
ID: 4 Name: S.M.Krishna Address: Budhwar Peth, Pune Email: [email protected]