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