SQLAlchemy Core - Usando funções
Algumas das funções importantes usadas no SQLAlchemy são discutidas neste capítulo.
O SQL padrão recomendou muitas funções que são implementadas pela maioria dos dialetos. Eles retornam um único valor com base nos argumentos transmitidos a eles. Algumas funções SQL aceitam colunas como argumentos, enquanto outras são genéricas.Thefunc keyword in SQLAlchemy API is used to generate these functions.
No SQL, now () é uma função genérica. As instruções a seguir renderizam a função now () usando func -
from sqlalchemy.sql import func
result = conn.execute(select([func.now()]))
print (result.fetchone())
O resultado da amostra do código acima pode ser conforme mostrado abaixo -
(datetime.datetime(2018, 6, 16, 6, 4, 40),)
Por outro lado, a função count () que retorna o número de linhas selecionadas de uma tabela, é renderizada seguindo o uso de func -
from sqlalchemy.sql import func
result = conn.execute(select([func.count(students.c.id)]))
print (result.fetchone())
A partir do código acima, a contagem do número de linhas na tabela de alunos será obtida.
Algumas funções SQL integradas são demonstradas usando a tabela Employee com os seguintes dados -
EU IRIA | Nome | Marcas |
---|---|---|
1 | Kamal | 56 |
2 | Fernandez | 85 |
3 | Sunil | 62 |
4 | Bhaskar | 76 |
A função max () é implementada seguindo o uso de func de SQLAlchemy que resultará em 85, o total de notas máximas obtidas -
from sqlalchemy.sql import func
result = conn.execute(select([func.max(employee.c.marks)]))
print (result.fetchone())
Da mesma forma, a função min () que retornará 56, marcas mínimas, será renderizada pelo seguinte código -
from sqlalchemy.sql import func
result = conn.execute(select([func.min(employee.c.marks)]))
print (result.fetchone())
Portanto, a função AVG () também pode ser implementada usando o código abaixo -
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())