SQLAlchemy Core - Korzystanie z funkcji
W tym rozdziale omówiono niektóre z ważnych funkcji używanych w SQLAlchemy.
Standardowy SQL zaleca wiele funkcji, które są zaimplementowane w większości dialektów. Zwracają pojedynczą wartość na podstawie przekazanych argumentów. Niektóre funkcje SQL przyjmują kolumny jako argumenty, podczas gdy inne są ogólne.Thefunc keyword in SQLAlchemy API is used to generate these functions.
W SQL now () jest funkcją ogólną. Następujące instrukcje renderują funkcję now () za pomocą func -
from sqlalchemy.sql import func
result = conn.execute(select([func.now()]))
print (result.fetchone())
Przykładowy wynik powyższego kodu może wyglądać tak, jak pokazano poniżej -
(datetime.datetime(2018, 6, 16, 6, 4, 40),)
Z drugiej strony funkcja count (), która zwraca liczbę wierszy wybranych z tabeli, jest renderowana przez użycie funkcji func -
from sqlalchemy.sql import func
result = conn.execute(select([func.count(students.c.id)]))
print (result.fetchone())
Z powyższego kodu zostanie pobrana liczba wierszy w tabeli uczniów.
Niektóre wbudowane funkcje SQL przedstawiono za pomocą tabeli Employee z następującymi danymi -
ID | Nazwa | Znaki |
---|---|---|
1 | Kamal | 56 |
2 | Fernandez | 85 |
3 | Sunil | 62 |
4 | Bhaskar | 76 |
Funkcja max () jest implementowana poprzez użycie funkcji func z SQLAlchemy, co da w wyniku 85, łączną maksymalną uzyskaną ocenę -
from sqlalchemy.sql import func
result = conn.execute(select([func.max(employee.c.marks)]))
print (result.fetchone())
Podobnie funkcja min (), która zwróci 56 znaków minimum, zostanie wyrenderowana przez następujący kod -
from sqlalchemy.sql import func
result = conn.execute(select([func.min(employee.c.marks)]))
print (result.fetchone())
Tak więc funkcję AVG () można również zaimplementować za pomocą poniższego kodu -
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())