db.session.execute(stmt).all() の戻り値の型
戻り値の型: list
リストの各要素の型:
SQLAlchemyの Row オブジェクト(Result オブジェクトの一部)。
Row オブジェクトは、タプルのように振る舞い、カラム名をキーとして値にアクセスできます。
以下のコードは、db.session.execute(stmt).all() を使った例です:
from sqlalchemy import select
from myapp import db # SQLAlchemyのインスタンス
# 仮のテーブルを選択
stmt = select(MyModel)
# 実行して結果を取得
results = db.session.execute(stmt).all()
# 結果の型と内容を確認
print(type(results)) # <class 'list'>
print(type(results[0])) # <class 'sqlalchemy.engine.row.Row'>
print(results[0].keys()) # カラム名のリスト(例: ['id', 'name', 'created_at'])
print(results[0].values()) # カラムに対応する値(例: [1, 'Alice', '2021-01-01'])
ここで、results はリストであり、その中の各要素は Row オブジェクトです。Row オブジェクトは、クエリ結果の各行に対応します。
他の戻り値の型
db.session.execute() の戻り値の型は、all() メソッドの使用方法によって異なります。以下のように、他のメソッドも使うことができます。
all()
戻り値: 結果をリストとして取得。
型: list
各要素の型: Row オブジェクト。
fetchall()
戻り値: all() と同様に、結果をリストとして取得。
型: list
各要素の型: Row オブジェクト。
first()
戻り値: 最初の1件の結果を取得。
型: Row オブジェクト(結果が存在する場合)、None(結果がない場合)。
fetchone()
戻り値: 最初の1件の結果を取得。
型: Row オブジェクト(結果が存在する場合)、None(結果がない場合)。
scalar()
戻り値: クエリの結果として1つのスカラー値(単一の値)を取得。
型: 任意の型(int, str, float など)。
注意: クエリが複数行を返す場合、scalar() は最初の行の最初のカラムのみを返します。