Python SQLAlchemy – func.count con filtro

 En este artículo, vamos a ver cómo realizar una operación de filtro con función de conteo en SQLAlchemy contra una base de datos PostgreSQL en python

Las operaciones de conteo con filtro se realizan en diferentes métodos usando diferentes funciones. Este tipo de operaciones matemáticas dependen de la base de datos. En PostgreSQL, el conteo se realiza usando una función llamada count(), y la operación de filtrado se realiza usando filter(). En SQLAlchemy, las funciones genéricas como SUM, MIN, MAX se invocan como funciones SQL convencionales usando el atributo func.

Algunas funciones comunes utilizadas en SQLAlchemy son count, cube, current_date, current_time, max, min, mode, etc.

Uso: func.count(). func.group_by(), func.max()

Creación de tabla para demostración.

Importe las funciones necesarias del paquete SQLAlchemy. Establezca una conexión con la base de datos PostgreSQL usando la función create_engine() como se muestra a continuación, cree una tabla llamada libros con las columnas book_id y book_price. Inserte un registro en las tablas usando la función insert() y valores() como se muestra.

Python3

# import necessary packages
import sqlalchemy
from sqlalchemy import create_engine, MetaData, Table,
Column, Numeric, Integer, VARCHAR
from sqlalchemy.engine import result
  
# establish connections
engine = create_engine(
    "database+dialect://username:password@host:port/databasename")
  
# initialize the Metadata Object
meta = MetaData(bind=engine)
MetaData.reflect(meta)
  
# create a table schema
books = Table(
    'books', meta,
    Column('bookId', Integer, primary_key=True),
    Column('book_price', Numeric),
    Column('genre', VARCHAR),
    Column('book_name', VARCHAR)
)
  
meta.create_all(engine)
# insert records into the table
statement1 = books.insert().values(bookId=1, book_price=12.2, 
                                   genre = 'fiction',
                                   book_name = 'Old age')
statement2 = books.insert().values(bookId=2, book_price=13.2,
                                   genre = 'non-fiction',
                                   book_name = 'Saturn rings')
statement3 = books.insert().values(bookId=3, book_price=121.6,
                                   genre = 'fiction',
                                   book_name = 'Supernova')
statement4 = books.insert().values(bookId=4, book_price=100,
                                   genre = 'non-fiction',
                                   book_name = 'History of the world')
statement5 = books.insert().values(bookId=5, book_price=1112.2,
                                   genre = 'fiction',
                                   book_name = 'Sun city')
  
# execute the insert records statement
engine.execute(statement1)
engine.execute(statement2)
engine.execute(statement3)
engine.execute(statement4)
engine.execute(statement5)

Producción:

tabla de muestra

Implementando GroupBy y contar en SQLAlchemy

Escribir una función groupby tiene un procedimiento ligeramente diferente al de una consulta SQL convencional que se muestra a continuación

sqlalchemy.select([

nombre_tabla.c.nombre_columna,

sqlalchemy.func.count(NombreTabla.c.nombre_columna)

]).group_by(Tablename.c.column_name).filter(Tablename.c.column_name value)

Obtenga la tabla de libros del objeto Metadata inicializado mientras se conecta a la base de datos. Pase la consulta SQL a la función execute() y obtenga todos los resultados usando la función fetchall(). Use un bucle for para iterar a través de los resultados.

La siguiente consulta devuelve el recuento de libros en diferentes géneros cuyos precios son superiores a Rs. 50

Python3

# Get the `books` table from the Metadata object
BOOKS = meta.tables['books']
  
# SQLAlchemy Query to GROUP BY and filter function
query = sqlalchemy.select([
    BOOKS.c.genre,
    sqlalchemy.func.count(BOOKS.c.genre)
]).group_by(BOOKS.c.genre).filter(BOOKS.c.book_price > 50.0)
  
# Fetch all the records
result = engine.execute(query).fetchall()
  
# View the records
for record in result:
    print("\n", record)

Producción:

La salida de la función Contar y filtrar

Publicación traducida automáticamente

Artículo escrito por jssuriyakumar 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 *