logo

Python SQLAlchemy – func.count avec filtre

Dans cet article, nous allons voir comment effectuer une opération de filtrage avec la fonction count dans SQLAlchemy sur une base de données PostgreSQL en python

Le comptage avec les opérations de filtre est effectué selon différentes méthodes en utilisant différentes fonctions. Ces types d’opérations mathématiques dépendent de la base de données. Dans PostgreSQL, le décompte est effectué à l'aide d'une fonction appelée count() et l'opération de filtrage est effectuée à l'aide de filter(). Dans SQLAlchemy, les fonctions génériques telles que SUM, MIN, MAX sont invoquées comme les fonctions SQL conventionnelles à l'aide de l'attribut func.



Certaines fonctions courantes utilisées dans SQLAlchemy sont count, cube, current_date, current_time, max, min, mode, etc.

exemple de

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

Création d'un tableau pour démonstration

Importez les fonctions nécessaires à partir du package SQLAlchemy. Établissez une connexion avec la base de données PostgreSQL à l'aide de la fonction create_engine() comme indiqué ci-dessous, créez une table appelée books avec les colonnes book_id et book_price. Insérez l'enregistrement dans les tables à l'aide des fonctions insert() et values() comme indiqué.



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

>

structures de données Java

>

Sortir:

Exemple de tableau

Implémentation de GroupBy et count dans SQLAlchemy

L'écriture d'une fonction groupby a une procédure légèrement différente de celle d'une requête SQL conventionnelle illustrée ci-dessous.

sqlalchemy.select([

convertir une chaîne en char java

Nom_table.c.nom_colonne,

sqlalchemy.func.count (Tablename.c.column_name)

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

Récupérez la table books à partir de l'objet Metadata initialisé lors de la connexion à la base de données. Transmettez la requête SQL à la fonctionexecute() et obtenez tous les résultats en utilisant la fonction fetchall(). Utilisez une boucle for pour parcourir les résultats.

La requête ci-dessous renvoie le nombre de livres de différents genres dont les prix sont supérieurs à Rs. 9,999. 50.

Python3


chaîne en jsonobject



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

>

>

Sortir:

La sortie de la fonction Compte et filtre