In questo articolo, vedremo come eseguire l'operazione di filtro con la funzione di conteggio in SQLAlchemy rispetto a un database PostgreSQL in Python
Il conteggio con operazioni di filtro viene eseguito in metodi diversi utilizzando funzioni diverse. Tali tipi di operazioni matematiche dipendono dal database. In PostgreSQL, il conteggio viene eseguito utilizzando una funzione chiamata count() e l'operazione di filtro viene eseguita utilizzando filter(). In SQLAlchemy, funzioni generiche come SUM, MIN, MAX vengono richiamate come funzioni SQL convenzionali utilizzando l'attributo func.
Alcune funzioni comuni utilizzate in SQLAlchemy sono count, cube, current_date, current_time, max, min, mode ecc.
Utilizzo: funz.count(). funz.group_by(), funz.max()
Creazione di una tabella per la dimostrazione
Importa le funzioni necessarie dal pacchetto SQLAlchemy. Stabilisci una connessione con il database PostgreSQL utilizzando la funzione create_engine() come mostrato di seguito, crea una tabella chiamata libri con le colonne book_id e book_price. Inserisci il record nelle tabelle utilizzando la funzione insert() evalues() come mostrato.
Python3
stringa Java in numero intero
# 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)> |
esempio di sottostringa Java
>
>
Produzione:

Tabella campione
Implementazione di GroupBy e conteggio in SQLAlchemy
La scrittura di una funzione groupby ha una procedura leggermente diversa da quella di una query SQL convenzionale mostrata di seguito
formica contro esperto
sqlalchemy.select([
nometabella.c.nome_colonna,
sqlalchemy.func.count(Nometabella.c.nome_colonna)
]).group_by(nometabella.c.nome_colonna).filter(valore nometabella.c.nome_colonna)
Ottieni la tabella dei libri dall'oggetto Metadata inizializzato durante la connessione al database. Passa la query SQL alla funzioneexecute() e ottieni tutti i risultati utilizzando la funzione fetchall(). Utilizzare un ciclo for per scorrere i risultati.
La query seguente restituisce il conteggio dei libri di generi diversi i cui prezzi sono superiori a Rs. 50.
Python3
panda iterrows
collezioni java
# 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)> |
>
>
Produzione:

L'output della funzione Conteggio e filtro