SQLAlchemy ORM - Sử dụng truy vấn
Tất cả các câu lệnh SELECT được tạo bởi SQLAlchemy ORM được xây dựng bởi đối tượng Truy vấn. Nó cung cấp một giao diện chung, do đó các cuộc gọi liên tiếp trả về một đối tượng Truy vấn mới, một bản sao của đối tượng cũ với các tiêu chí và tùy chọn bổ sung được liên kết với nó.
Các đối tượng truy vấn được tạo ban đầu bằng phương thức query () của Session như sau:
q = session.query(mapped class)
Câu lệnh sau cũng tương đương với câu lệnh đã cho ở trên:
q = Query(mappedClass, session)
Đối tượng truy vấn có phương thức all () trả về tập kết quả ở dạng danh sách các đối tượng. Nếu chúng tôi thực hiện nó trên bàn khách hàng của mình -
result = session.query(Customers).all()
Câu lệnh này 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
Đối tượng kết quả có thể được duyệt qua bằng vòng lặp For như bên dưới để lấy tất cả các bản ghi trong bảng khách hàng cơ bản. Đây là mã hoàn chỉnh để hiển thị tất cả các bản ghi trong bảng Khách hàng -
from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
engine = create_engine('sqlite:///sales.db', echo = True)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Customers(Base):
__tablename__ = 'customers'
id = Column(Integer, primary_key = True)
name = Column(String)
address = Column(String)
email = Column(String)
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind = engine)
session = Session()
result = session.query(Customers).all()
for row in result:
print ("Name: ",row.name, "Address:",row.address, "Email:",row.email)
Bảng điều khiển Python hiển thị danh sách các bản ghi như bên dưới:
Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]
Name: Komal Pande Address: Koti, Hyderabad Email: [email protected]
Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
Name: S.M.Krishna Address: Budhwar Peth, Pune Email: [email protected]
Đối tượng Truy vấn cũng có các phương thức hữu ích sau:
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | add_columns() Nó thêm một hoặc nhiều biểu thức cột vào danh sách các cột kết quả được trả về. |
2 | add_entity() Nó thêm một thực thể được ánh xạ vào danh sách các cột kết quả sẽ được trả về. |
3 | count() Nó trả về một số hàng mà Truy vấn này sẽ trả về. |
4 | delete() Nó thực hiện một truy vấn xóa hàng loạt. Xóa các hàng phù hợp với truy vấn này khỏi cơ sở dữ liệu. |
5 | distinct() Nó áp dụng một mệnh đề DISTINCT cho truy vấn và trả về Truy vấn mới kết quả. |
6 | filter() Nó áp dụng tiêu chí lọc nhất định cho bản sao của Truy vấn này, sử dụng các biểu thức SQL. |
7 | first() Nó trả về kết quả đầu tiên của Truy vấn này hoặc Không có nếu kết quả không chứa bất kỳ hàng nào. |
số 8 | get() Nó trả về một thể hiện dựa trên mã định danh khóa chính đã cho cung cấp quyền truy cập trực tiếp vào bản đồ nhận dạng của Phiên sở hữu. |
9 | group_by() Nó áp dụng một hoặc nhiều tiêu chí GROUP BY cho truy vấn và trả về Truy vấn mới kết quả |
10 | join() Nó tạo ra một SQL JOIN dựa trên tiêu chí của đối tượng Truy vấn này và áp dụng chung, trả về Truy vấn mới kết quả. |
11 | one() Nó trả về chính xác một kết quả hoặc đưa ra một ngoại lệ. |
12 | order_by() Nó áp dụng một hoặc nhiều tiêu chí ORDER BY cho truy vấn và trả về Truy vấn mới kết quả. |
13 | update() Nó thực hiện một truy vấn cập nhật hàng loạt và cập nhật các hàng phù hợp với truy vấn này trong cơ sở dữ liệu. |