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:
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í:
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