En aquest article, veurem com realitzar operacions de filtre amb funció de recompte a SQLAlchemy contra una base de dades PostgreSQL a Python
Les operacions de recompte amb filtre es realitzen de diferents mètodes utilitzant diferents funcions. Aquest tipus d'operacions matemàtiques depenen de la base de dades. A PostgreSQL, el recompte es realitza mitjançant una funció anomenada count() i l'operació de filtre es realitza amb filter(). A SQLAlchemy, les funcions genèriques com SUM, MIN, MAX s'invoquen com les funcions SQL convencionals mitjançant l'atribut func.
Algunes de les funcions habituals que s'utilitzen a SQLAlchemy són count, cube, current_date, current_time, max, min, mode, etc.
Ús: func.count(). func.group_by(), func.max()
Creació de taula per a la demostració
Importeu les funcions necessàries del paquet SQLAlchemy. Establiu la connexió amb la base de dades PostgreSQL mitjançant la funció create_engine() com es mostra a continuació, creeu una taula anomenada llibres amb les columnes book_id i book_price. Inseriu el registre a les taules utilitzant la funció insert() i values() tal com es mostra.
Python 3
emissió de tipus i conversió de tipus en 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)> |
>
>
quina és la mida de la pantalla del meu ordinador
Sortida:

Taula de mostra
Implementant GroupBy i comptar a SQLAlchemy
Escriure una funció groupby té un procediment lleugerament diferent al d'una consulta SQL convencional que es mostra a continuació
sqlalchemy.select([
nom_taula.c.nom_columna,
sqlalchemy.func.count(NomTaula.c.nom_columna)
]).group_by(Tablename.c.column_name).filter(Tablename.c.column_name valor)
Aconsegueix inicialitzar la taula de llibres de l'objecte Metadades mentre et connectes a la base de dades. Passeu la consulta SQL a la funció execute() i obteniu tots els resultats mitjançant la funció fetchall(). Utilitzeu un bucle for per iterar els resultats.
La consulta següent retorna el recompte de llibres de diferents gèneres els preus dels quals són superiors a Rs. 50.
Python 3
# 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)> |
barra d'eines d'accés ràpid de ms word
>
>
Sortida:

La sortida de la funció Recompte i filtre