SQLAlchemy – Funciones agregadas

En este artículo, veremos cómo seleccionar el conteo de filas usando SQLAlchemy usando Python.

Antes de comenzar, instalemos las dependencias requeridas usando pip:

pip install sqlalchemy

Como vamos a usar MySQL en esta publicación, también instalaremos un conector SQL para MySQL en Python. Sin embargo, ninguna de las implementaciones de código cambia con el cambio en la base de datos, excepto los conectores SQL.

pip install pymysql

Hay 5 funciones agregadas de SQL que se usan con frecuencia, como se muestra a continuación:

Funciones agregadas de SQL

En este artículo, cubriremos los ejemplos para cada una de las funciones agregadas anteriores. En ambos ejemplos, contaremos el número de registros presentes en la tabla de pagos dentro de la base de datos de sakila . El registro de muestra de la tabla de pagos se ve así:

Tabla de pagos

Si no tiene la base de datos sakila y desea seguir este artículo sin instalarlo, use el script SQL presente en el enlace que se menciona a continuación para crear el esquema y la tabla de pagos requeridos junto con los registros. Guión de tabla de pagos de Sakila

La función ` func ` en SQLAlchemy se usa para implementar estas funciones agregadas. La siguiente tabla resume el método utilizado para cada una de las funciones agregadas.

Función agregada de SQL Método SQLAlchemy 
MIN() sqlalchemy.func.min()
MÁX.() sqlalchemy.func.max()
SUMA() sqlalchemy.func.sum()
PROMEDIO() sqlalchemy.func.avg()
CONTAR() sqlalchemy.func.count()

MIN()

Aquí usaremos la función sqlalchemy.func.min() para obtener el elemento mínimo para las filas.

Sintaxis: sqlalchemy.select([sqlalchemy.func.min(sqlalchemy.DeclarativeMeta)])

Código:

Python

# IMPORT THE REQUIRED LIBRARY
import sqlalchemy as db
 
# DEFINE THE ENGINE (CONNECTION OBJECT)
engine = db.create_engine("mysql+pymysql://\
root:password@localhost/sakila")
 
# CREATE THE METADATA OBJECT TO ACCESS THE TABLE
meta_data = db.MetaData(bind=engine)
db.MetaData.reflect(meta_data)
 
# GET THE `payment` TABLE FROM THE METADATA OBJECT
payment_table = meta_data.tables['payment']
 
# SELECT MIN(amount) FROM sakila.`payment`;
query = db.select([db.func.min(payment_table.c.amount)])
 
# FETCH ALL THE RECORDS IN THE RESPONSE
result = engine.execute(query).first()
 
# VIEW THE RESULT
print(result[0])

Producción:

0.00

MÁX.()

Aquí usaremos la función sqlalchemy.func.max() para obtener el elemento máximo para las filas.

Sintaxis: sqlalchemy.select([sqlalchemy.func.max(sqlalchemy.DeclarativeMeta)])

Código:

Python

# IMPORT THE REQUIRED LIBRARY
import sqlalchemy as db
 
# DEFINE THE ENGINE (CONNECTION OBJECT)
engine = db.create_engine("mysql+pymysql://\
root:password@localhost/sakila")
 
# CREATE THE METADATA OBJECT TO ACCESS THE TABLE
meta_data = db.MetaData(bind=engine)
db.MetaData.reflect(meta_data)
 
# GET THE `payment` TABLE FROM THE METADATA OBJECT
payment_table = meta_data.tables['payment']
 
# SELECT MAX(amount) FROM sakila.`payment`;
query = db.select([db.func.max(payment_table.c.amount)])
 
# FETCH ALL THE RECORDS IN THE RESPONSE
result = engine.execute(query).first()
 
# VIEW THE RESULT
print(result[0])

Producción:

11.99

SUMA()

Aquí usaremos la función sqlalchemy.func.sum() para obtener el elemento de suma para las filas.

Sintaxis: sqlalchemy.select([sqlalchemy.func.sum(sqlalchemy.DeclarativeMeta)])

Código:

Python

# IMPORT THE REQUIRED LIBRARY
import sqlalchemy as db
 
# DEFINE THE ENGINE (CONNECTION OBJECT)
engine = db.create_engine("mysql+pymysql://\
root:password@localhost/sakila")
 
# CREATE THE METADATA OBJECT TO ACCESS THE TABLE
meta_data = db.MetaData(bind=engine)
db.MetaData.reflect(meta_data)
 
# GET THE `payment` TABLE FROM THE METADATA OBJECT
payment_table = meta_data.tables['payment']
 
# SELECT SUM(amount) FROM sakila.`payment`;
query = db.select([db.func.sum(payment_table.c.amount)])
 
# FETCH ALL THE RECORDS IN THE RESPONSE
result = engine.execute(query).first()
 
# VIEW THE RESULT
print(result[0])

Producción:

67416.51

PROMEDIO()

Aquí usaremos la función sqlalchemy.func.avg() para obtener el elemento promedio de las filas.

Sintaxis: sqlalchemy.select([sqlalchemy.func.avg(sqlalchemy.DeclarativeMeta)])

Código:

Python

# IMPORT THE REQUIRED LIBRARY
import sqlalchemy as db
 
# DEFINE THE ENGINE (CONNECTION OBJECT)
engine = db.create_engine("mysql+pymysql://\
root:password@localhost/sakila")
 
# CREATE THE METADATA OBJECT TO ACCESS THE TABLE
meta_data = db.MetaData(bind=engine)
db.MetaData.reflect(meta_data)
 
# GET THE `payment` TABLE FROM THE METADATA OBJECT
payment_table = meta_data.tables['payment']
 
# SELECT AVG(amount) FROM sakila.`payment`;
query = db.select([db.func.avg(payment_table.c.amount)])
 
# FETCH ALL THE RECORDS IN THE RESPONSE
result = engine.execute(query).first()
 
# VIEW THE RESULT
print(result[0])

Producción:

4.200667

CONTAR()

Aquí usaremos la función sqlalchemy.func.count() para obtener el número de filas.

Sintaxis: sqlalchemy.select([sqlalchemy.func.count(sqlalchemy.DeclarativeMeta)])

Código:

Python

# IMPORT THE REQUIRED LIBRARY
import sqlalchemy as db
 
# DEFINE THE ENGINE (CONNECTION OBJECT)
engine = db.create_engine("mysql+pymysql://\
root:password@localhost/sakila")
 
# CREATE THE METADATA OBJECT TO ACCESS THE TABLE
meta_data = db.MetaData(bind=engine)
db.MetaData.reflect(meta_data)
 
# GET THE `payment` TABLE FROM THE METADATA OBJECT
payment_table = meta_data.tables['payment']
 
# SELECT COUNT(amount) FROM sakila.`payment`;
query = db.select([db.func.count(payment_table.c.amount)])
 
# FETCH ALL THE RECORDS IN THE RESPONSE
result = engine.execute(query).first()
 
# VIEW THE RESULT
print(result[0])

Producción:

16049

Publicación traducida automáticamente

Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *