SQLAlchemy クエリ SELECT結果受け取り方法の整理

SELECT結果⇒クラス定義した任意Objectのリストとして受け取る。

query() でSELECT結果にあてはまるObjectクラスを指定、from_statement で、
SQLステートメントを渡してall() で結果を受け取る。
session.query(Objectクラス).from_statement(text(完成したSQL文)).all()
パラメータを渡す時、、

sql = "SELECT * FROM itemwork WHERE user_name = :userName"
session.query(Item).from_statement(text(sql).params(userName='A')).all()

Objectクラスで定義しないで、値を受け取る方法は、
execute(text(完成したSQL)).all を実行する。

SELECT結果⇒(値,,,)tuple のリストとして受け取る。

sql = "SELECT * FROM itemwork WHERE user_name = :userName"
session.execute(text(sql).params(userName='B')).all()

SELECT結果⇒key=列名、value の辞書型(dict) と同様の型
sqlalchemy.engine.RowMapping のリストとして受け取る。

mappings().all() とすることで、辞書型で結果を取得する。

sql = "SELECT * FROM itemwork WHERE user_name = :userName"
session.execute(text(sql).params(userName='B')).mappings().all()