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