logo

Python SQLAlchemy – func.count cu filtru

În acest articol, vom vedea cum să efectuăm operația de filtrare cu funcția de numărare în SQLAlchemy împotriva unei baze de date PostgreSQL în python

Operațiile de numărare cu filtru sunt efectuate în diferite metode folosind diferite funcții. Astfel de tipuri de operații matematice sunt dependente de baze de date. În PostgreSQL, numărarea este efectuată folosind o funcție numită count(), iar operația de filtrare este efectuată folosind filter(). În SQLAlchemy, funcțiile generice precum SUM, MIN, MAX sunt invocate ca și funcțiile SQL convenționale folosind atributul func.



e r exemple de model

Unele funcții comune utilizate în SQLAlchemy sunt count, cube, current_date, current_time, max, min, mode etc.

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

Crearea tabelului pentru demonstrație

Importați funcțiile necesare din pachetul SQLAlchemy. Stabiliți conexiunea cu baza de date PostgreSQL folosind funcția create_engine() așa cum se arată mai jos, creați un tabel numit cărți cu coloanele book_id și book_price. Inserați înregistrarea în tabele folosind funcția insert() și values() așa cum se arată.



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

string la ea

>

>

Ieșire:

Tabel de probă

Implementarea GroupBy și count în SQLAlchemy

Scrierea unei funcții groupby are o procedură ușor diferită de cea a unei interogări SQL convenționale, care este prezentată mai jos

sqlalchemy.select([

furnică vs maven

Tablename.c.column_name,

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

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

Obțineți tabelul de cărți din obiectul Metadate inițializat în timp ce vă conectați la baza de date. Treceți interogarea SQL la funcția execute() și obțineți toate rezultatele folosind funcția fetchall(). Utilizați o buclă for pentru a itera rezultatele.

Interogarea de mai jos returnează numărul de cărți din diferite genuri ale căror prețuri sunt mai mari de 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>>>>)> > # Fetch all the records> result>=> engine.execute(query).fetchall()> > # View the records> for> record>in> result:> >print>(>' '>, record)>

>

sistem de operare linux
>

Ieșire:

Ieșirea funcției de numărare și filtrare