In diesem Artikel erfahren Sie, wie Sie einen Filtervorgang mit der Zählfunktion in SQLAlchemy für eine PostgreSQL-Datenbank in Python durchführen
Zufallsgenerator ohne Zufallsgenerator in Java
Zählvorgänge mit Filter werden auf unterschiedliche Weise und mit unterschiedlichen Funktionen durchgeführt. Solche mathematischen Operationen sind datenbankabhängig. In PostgreSQL wird die Zählung mit einer Funktion namens count() durchgeführt, und die Filteroperation wird mit filter() durchgeführt. In SQLAlchemy werden generische Funktionen wie SUM, MIN, MAX wie herkömmliche SQL-Funktionen über das func-Attribut aufgerufen.
Einige häufig in SQLAlchemy verwendete Funktionen sind count, Cube, current_date, current_time, max, min, mode usw.
Verwendung: func.count(). func.group_by(), func.max()
Erstellen einer Tabelle zur Demonstration
Importieren Sie die erforderlichen Funktionen aus dem SQLAlchemy-Paket. Stellen Sie mithilfe der Funktion „create_engine()“ wie unten gezeigt eine Verbindung mit der PostgreSQL-Datenbank her und erstellen Sie eine Tabelle namens „books“ mit den Spalten „book_id“ und „book_price“. Fügen Sie den Datensatz wie gezeigt mit den Funktionen insert() und Values() in die Tabellen ein.
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)> |
>
>
Ausgabe:

Beispieltisch
Implementieren von GroupBy und count in SQLAlchemy
Das Schreiben einer Groupby-Funktion erfolgt etwas anders als das einer herkömmlichen SQL-Abfrage, wie unten gezeigt
sqlalchemy.select([
Tabellenname.c.Spaltenname,
sqlalchemy.func.count(Tablename.c.column_name)
]).group_by(Tablename.c.column_name).filter(Tablename.c.column_name value)
Rufen Sie die Büchertabelle aus dem Metadatenobjekt ab, das beim Herstellen einer Verbindung zur Datenbank initialisiert wurde. Übergeben Sie die SQL-Abfrage an die Funktion „execute()“ und rufen Sie alle Ergebnisse mit der Funktion „fetchall()“ ab. Verwenden Sie eine for-Schleife, um die Ergebnisse zu durchlaufen.
Die folgende Abfrage gibt die Anzahl der Bücher verschiedener Genres zurück, deren Preise mehr als Rs. betragen. 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>>50.0>)> > # Fetch all the records> result>=> engine.execute(query).fetchall()> > # View the records> for> record>in> result:> >print>(>'
'>, record)> |
>
>
Ausgabe:

Die Ausgabe der Zähl- und Filterfunktion