logo

Python SQLAlchemy – フィルターを使用した func.count

この記事では、Python で PostgreSQL データベースに対して SQLAlchemy の count 関数を使用してフィルター操作を実行する方法を説明します。

フィルター操作によるカウントは、さまざまな関数を使用したさまざまな方法で実行されます。このような数学的演算はデータベースに依存します。 PostgreSQLではカウントはcount()という関数で行い、フィルタ操作はfilter()で行います。 SQLAlchemy では、SUM、MIN、MAX などの汎用関数は、func 属性を使用して従来の SQL 関数と同様に呼び出されます。

SQLAlchemy で使用される一般的な関数には、count、cube、current_date、current_time、max、min、mode などがあります。



使用法: func.count()。 func.group_by()、func.max()

デモンストレーション用のテーブルの作成

SQLAlchemy パッケージから必要な関数をインポートします。以下に示すように、create_engine() 関数を使用して PostgreSQL データベースとの接続を確立し、列 book_id と book_price を持つ book という名前のテーブルを作成します。図に示すように、insert() 関数と value() 関数を使用してテーブルにレコードを挿入します。

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

>

>

出力:

サンプルテーブル

SQLAlchemy での GroupBy と count の実装

groupby 関数の作成手順は、以下に示す従来の SQL クエリの手順とは少し異なります。

州のリスト

sqlalchemy.select([

テーブル名.c.列名、

sqlalchemy.func.count(テーブル名.c.列名)

]).group_by(テーブル名.c.列名).filter(テーブル名.c.列名の値)

データベースへの接続中に初期化されたメタデータ オブジェクトからブックス テーブルを取得します。 SQL クエリをexecute() 関数に渡し、fetchall() 関数を使用してすべての結果を取得します。 for ループを使用して結果を反復処理します。

以下のクエリは、価格が Rs を超える、さまざまなジャンルの書籍の数を返します。 50.

Python3

C++でintを文字列に変換する




選択範囲の並べ替え

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

>

>

出力:

カウントおよびフィルター関数の出力