logo

Python SQLAlchemy – func.count suodattimella

Tässä artikkelissa aiomme nähdä, kuinka suodatustoiminto suoritetaan SQLAlchemyn laskentatoiminnolla pythonin PostgreSQL-tietokantaa vastaan

Lasku suodatinoperaatioilla suoritetaan eri menetelmillä eri toimintoja käyttäen. Tällaiset matemaattiset operaatiot ovat tietokannasta riippuvaisia. PostgreSQL:ssä laskenta suoritetaan käyttämällä funktiota nimeltä count(), ja suodatintoiminto suoritetaan käyttämällä filter(). SQLAlchemyssä yleisiä toimintoja, kuten SUM, MIN, MAX, kutsutaan tavanomaisten SQL-funktioiden tapaan func-attribuutilla.



Joitakin yleisiä SQLAlchemyssä käytettyjä toimintoja ovat count, cube, current_date, current_time, max, min, mode jne.

Käyttö: func.count(). func.group_by(), func.max()

Esittelypöydän luominen

Tuo tarvittavat funktiot SQLAlchemy-paketista. Muodosta yhteys PostgreSQL-tietokantaan käyttämällä create_engine()-funktiota alla kuvatulla tavalla, luo taulukko nimeltä books, jossa on sarakkeet book_id ja book_price. Lisää tietue taulukoihin käyttämällä insert()- ja arvot()-funktioita kuvan mukaisesti.



Python 3

Greatandhra






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

>

>

Lähtö:

Esimerkkitaulukko

GroupBy:n ja laskennan käyttöönotto SQLAlchemyssä

Groupby-funktion kirjoittamisessa on hieman erilainen menettely kuin perinteisessä SQL-kyselyssä, joka näkyy alla

sqlalchemy.select([

charat java

Taulukonnimi.c.sarakkeen_nimi,

sqlalchemy.func.count(taulukonnimi.c.sarakkeen_nimi)

]).group_by(Taulukonnimi.c.sarakkeen_nimi).filter(Taulukonnimi.c.sarakkeen_nimi arvo)

Hanki kirjataulukko Metadata-objektista alustettuna, kun muodostat yhteyden tietokantaan. Välitä SQL-kysely execute()-funktiolle ja hanki kaikki tulokset käyttämällä fetchall()-funktiota. Käytä for-silmukkaa tulosten toistamiseen.

Alla oleva kysely palauttaa eri genreihin kuuluvien kirjojen määrän, joiden hinnat ovat yli 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>>>)> > # Fetch all the records> result>=> engine.execute(query).fetchall()> > # View the records> for> record>in> result:> >print>(>' '>, record)>

terävä kulma

>

>

Lähtö:

Laskuri- ja suodatustoiminnon tulos