SQLAlchemy Core - Sử dụng các hàm
Một số hàm quan trọng được sử dụng trong SQLAlchemy được thảo luận trong chương này.
SQL chuẩn đã đề xuất nhiều hàm được thực hiện bởi hầu hết các phương ngữ. Chúng trả về một giá trị duy nhất dựa trên các đối số được truyền cho nó. Một số hàm SQL lấy cột làm đối số trong khi một số hàm chung chung.Thefunc keyword in SQLAlchemy API is used to generate these functions.
Trong SQL, now () là một hàm chung. Các câu lệnh sau hiển thị hàm now () bằng cách sử dụng func:
from sqlalchemy.sql import func
result = conn.execute(select([func.now()]))
print (result.fetchone())
Kết quả mẫu của đoạn mã trên có thể như hình dưới đây -
(datetime.datetime(2018, 6, 16, 6, 4, 40),)
Mặt khác, hàm count () trả về số hàng được chọn từ bảng, được hiển thị bằng cách sử dụng hàm func sau:
from sqlalchemy.sql import func
result = conn.execute(select([func.count(students.c.id)]))
print (result.fetchone())
Từ đoạn mã trên, số lượng hàng trong bảng sinh viên sẽ được tìm nạp.
Một số hàm SQL tích hợp được trình bày bằng cách sử dụng bảng Nhân viên với dữ liệu sau:
TÔI | Tên | Điểm |
---|---|---|
1 | Kamal | 56 |
2 | Fernandez | 85 |
3 | Sunil | 62 |
4 | Bhaskar | 76 |
Hàm max () được triển khai bằng cách sử dụng hàm func từ SQLAlchemy sau đây sẽ dẫn đến 85, tổng số điểm tối đa thu được -
from sqlalchemy.sql import func
result = conn.execute(select([func.max(employee.c.marks)]))
print (result.fetchone())
Tương tự, hàm min () sẽ trả về 56, điểm tối thiểu, sẽ được hiển thị bằng mã sau:
from sqlalchemy.sql import func
result = conn.execute(select([func.min(employee.c.marks)]))
print (result.fetchone())
Vì vậy, hàm AVG () cũng có thể được triển khai bằng cách sử dụng đoạn mã dưới đây:
from sqlalchemy.sql import func
result = conn.execute(select([func.avg(employee.c.marks)]))
print (result.fetchone())
Functions are normally used in the columns clause of a select statement.
They can also be given label as well as a type. A label to function allows the result
to be targeted in a result row based on a string name, and a type is required when
you need result-set processing to occur.from sqlalchemy.sql import func
result = conn.execute(select([func.max(students.c.lastname).label('Name')]))
print (result.fetchone())