logo

Python SQLAlchemy – func.count con filtro

En este artículo, veremos cómo realizar una operación de filtro con la función de recuento en SQLAlchemy contra una base de datos PostgreSQL en Python.

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



Algunas funciones comunes utilizadas en SQLAlchemy son recuento, cubo, fecha_actual, hora_actual, máximo, mínimo, modo, etc.

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

Creando una 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 registros en las tablas usando la función insertar() y valores() como se muestra.



Python3




cadena subcadena java



# 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)>

>

manejo de excepciones java

>

Producción:

tabla de muestra

Implementando GroupBy y contando 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(nombre_tabla.c.nombre_columna).filtro(nombre_tabla.c.nombre_columna valor)

Obtenga la tabla de libros del objeto Metadatos inicializada mientras se conecta a la base de datos. Pase la consulta SQL a la función ejecutar() y obtenga todos los resultados utilizando la función fetchall(). Utilice un bucle for para recorrer los resultados.

La siguiente consulta devuelve el recuento de libros de 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>(>' '>, record)>

centos vs rhel

>

>

Producción:

La salida de la función Contar y filtrar.