logo

Python SQLAlchemy – func.count z filtrem

W tym artykule zobaczymy, jak wykonać operację filtrowania za pomocą funkcji zliczania w SQLAlchemy względem bazy danych PostgreSQL w Pythonie

Liczenie z operacjami filtrowania odbywa się różnymi metodami przy użyciu różnych funkcji. Tego rodzaju operacje matematyczne zależą od bazy danych. W PostgreSQL zliczanie odbywa się za pomocą funkcji o nazwie count(), a operacja filtrowania odbywa się za pomocą filter(). W SQLAlchemy funkcje ogólne, takie jak SUM, MIN, MAX, są wywoływane jak konwencjonalne funkcje SQL przy użyciu atrybutu func.



Niektóre typowe funkcje używane w SQLAlchemy to liczba, kostka, bieżąca_data, bieżący czas, maks., min., tryb itp.

math.random Java

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

Tworzenie stołu do demonstracji

Zaimportuj niezbędne funkcje z pakietu SQLAlchemy. Nawiąż połączenie z bazą danych PostgreSQL za pomocą funkcji create_engine() jak pokazano poniżej, utwórz tabelę o nazwie książki z kolumnami book_id i book_price. Wstaw rekord do tabel za pomocą funkcji wstaw() i wartości(), jak pokazano.



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

>

wartość netto kat timpf

>

Wyjście:

Przykładowa tabela

Implementacja GroupBy i Count w SQLAlchemy

Zapisanie funkcji groupby przebiega nieco inaczej niż w przypadku konwencjonalnego zapytania SQL, co pokazano poniżej

sqlalchemy.select([

konwersja ciągu na datę

Nazwa tabeli.c.nazwa_kolumny,

sqlalchemy.func.count(Nazwa tabeli.c.nazwa_kolumny)

]).group_by(nazwa tabeli.c.nazwa_kolumny).filter(nazwa tabeli.c.nazwa_kolumny wartość)

Pobierz tabelę książek z obiektu Metadata zainicjowanego podczas łączenia się z bazą danych. Przekaż zapytanie SQL do funkcji wykonywania() i uzyskaj wszystkie wyniki za pomocą funkcji fetchall(). Użyj pętli for, aby iterować po wynikach.

Poniższe zapytanie zwraca liczbę książek różnych gatunków, których ceny przekraczają Rs. 50.

Python3


wyrównaj obraz za pomocą CSS



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

>

>

Wyjście:

Dane wyjściowe funkcji Count i filter