SQLAlchemy Core - การใช้ฟังก์ชัน

ฟังก์ชันสำคัญบางอย่างที่ใช้ใน SQLAlchemy จะกล่าวถึงในบทนี้

Standard SQL ได้แนะนำฟังก์ชันมากมายที่ใช้โดยภาษาถิ่นส่วนใหญ่ โดยส่งคืนค่าเดียวตามอาร์กิวเมนต์ที่ส่งไป ฟังก์ชัน SQL บางฟังก์ชันใช้คอลัมน์เป็นอาร์กิวเมนต์ในขณะที่บางฟังก์ชันเป็นแบบทั่วไปThefunc keyword in SQLAlchemy API is used to generate these functions.

ใน SQL ตอนนี้ () เป็นฟังก์ชันทั่วไป ข้อความต่อไปนี้แสดงฟังก์ชัน now () โดยใช้ func -

from sqlalchemy.sql import func
result = conn.execute(select([func.now()]))
print (result.fetchone())

ตัวอย่างผลลัพธ์ของโค้ดด้านบนอาจเป็นดังที่แสดงด้านล่าง -

(datetime.datetime(2018, 6, 16, 6, 4, 40),)

ในทางกลับกันฟังก์ชัน count () ซึ่งส่งคืนจำนวนแถวที่เลือกจากตารางจะแสดงผลโดยใช้ฟังก์ชันต่อไปนี้ -

from sqlalchemy.sql import func
result = conn.execute(select([func.count(students.c.id)]))
print (result.fetchone())

จากโค้ดด้านบนจะมีการดึงข้อมูลจำนวนแถวในตารางนักเรียน

ฟังก์ชัน SQL ในตัวบางอย่างจะแสดงโดยใช้ตารางพนักงานพร้อมข้อมูลต่อไปนี้ -

ID ชื่อ เครื่องหมาย
1 คามาล 56
2 เฟอร์นันเดซ 85
3 Sunil 62
4 บาสการ์ 76

ฟังก์ชั่น max () ถูกนำไปใช้โดยการใช้ func จาก SQLAlchemy ซึ่งจะส่งผลให้ได้ 85 คะแนนสูงสุดทั้งหมดที่ได้รับ -

from sqlalchemy.sql import func
result = conn.execute(select([func.max(employee.c.marks)]))
print (result.fetchone())

ในทำนองเดียวกันฟังก์ชัน min () ที่จะส่งกลับ 56 เครื่องหมายต่ำสุดจะแสดงผลโดยรหัสต่อไปนี้ -

from sqlalchemy.sql import func
result = conn.execute(select([func.min(employee.c.marks)]))
print (result.fetchone())

ดังนั้นฟังก์ชัน AVG () จึงสามารถใช้งานได้โดยใช้รหัสด้านล่าง -

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())