Šiame straipsnyje mes pamatysime, kaip atlikti filtro operaciją su skaičiavimo funkcija SQLAlchemy, palyginti su PostgreSQL duomenų baze python.
Skaičiavimas su filtrais atliekamas skirtingais metodais, naudojant skirtingas funkcijas. Tokios matematinės operacijos priklauso nuo duomenų bazės. PostgreSQL skaičiavimas atliekamas naudojant funkciją, vadinamą count(), o filtro operacija atliekama naudojant filter(). SQLAlchemy bendrosios funkcijos, tokios kaip SUM, MIN, MAX, iškviečiamos kaip įprastos SQL funkcijos, naudojant func atributą.
Kai kurios įprastos funkcijos, naudojamos SQLAlchemy, yra skaičius, kubas, srovės_data, dabartinis_laikas, maksimalus, min., režimas ir kt.
Naudojimas: func.count(). func.group_by(), func.max()
Lentelės kūrimas demonstravimui
Importuokite reikalingas funkcijas iš SQLAlchemy paketo. Užmegzkite ryšį su PostgreSQL duomenų baze naudodami funkciją create_engine(), kaip parodyta toliau, sukurkite lentelę, pavadintą knygos su stulpeliais book_id ir book_price. Įterpkite įrašą į lenteles naudodami įterpimo () ir reikšmės () funkcijas, kaip parodyta.
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)> |
>
pavyzdys
>
Išvestis:

Lentelės pavyzdys
„GroupBy“ ir „Count“ diegimas „SQLAlchemy“.
Funkcijos groupby rašymas turi šiek tiek kitokią procedūrą nei įprastos SQL užklausos, kuri parodyta žemiau
sqlalchemy.select([
Lentelės pavadinimas.c.stulpelio_pavadinimas,
sqlalchemy.func.count(Lentelės pavadinimas.c.stulpelio_pavadinimas)
]).group_by(Lentelėspavadinimas.c.stulpelio_pavadinimas).filter(Lentelėspavadinimas.c.stulpelio_pavadinimo reikšmė)
Gaukite knygų lentelę iš metaduomenų objekto, kuris buvo inicijuotas prisijungiant prie duomenų bazės. Perduokite SQL užklausą funkcijai execute() ir gaukite visus rezultatus naudodami funkciją fetchall(). Norėdami pakartoti rezultatus, naudokite for kilpą.
Toliau pateikta užklausa pateikia skirtingų žanrų knygų, kurių kainos didesnės nei Rs, skaičių. 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)> |
>
sujungti rūšiuoti
>
Išvestis:

Skaičiavimo ir filtro funkcijos išvestis