SQLAlchemyはPythonでよく使われるORマッパーです。ここでは、SQLAlchemyを使用してデータのカウントを行う方法について説明します。
全件カウントする方法
全件カウントするには、次のように書きます。
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.engine import Result
from sqlalchemy import select
from sqlalchemy.orm import joinedload
from sqlalchemy.sql.expression import func
result: Result = await db.execute(func.count(log_model.Log.id))
logs = result.scalar()
where句を使ってカウントする方法
where句を使って特定の条件を満たすデータのみをカウントするには、次のように書きます。
user_counts_client = await db.scalar(
select(func.count())
.select_from(user_model.User)
.filter(user_model.User.role == "client")
)
SQLAlchemyのバージョン1.4以降でのカウント方法
SQLAlchemyのバージョン1.4以降では、Query.count
の代わりに次のように書くことが推奨されています。
count_query = query.with_only_columns(func.count(Foo.id))
count = session.execute(count_query).scalar_one()
以上がPythonとSQLAlchemyを用いたデータカウントクエリの基本的な書き方です。これらのコードを参考に、自分のプロジェクトに適したクエリを作成してみてください。.