Sqlalchemy-orm-returning-list-and-scalars

提供:Dev Guides
移動先:案内検索

リストとスカラーを返す

すぐにSQLを発行し、ロードされたデータベースの結果を含む値を返すQueryオブジェクトのメソッドがいくつかあります。

リストとスカラーを返す簡単な概要は次のとおりです-

すべて()

リストを返します。 以下に示すのは、all()関数のコード行です。

session.query(Customers).all()

Pythonコンソールには、次のSQL式が表示されます-

SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers

最初()

1の制限を適用し、最初の結果をスカラーとして返します。

SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
LIMIT ? OFFSET ?

LIMITのバインドパラメーターは1で、OFFSETのバインドパラメーターは0です。

1()

このコマンドはすべての行を完全にフェッチし、結果にオブジェクトIDまたは複合行が1つだけ存在しない場合、エラーが発生します。

session.query(Customers).one()

複数の行が見つかりました-

MultipleResultsFound: Multiple rows were found for one()

行が見つかりませんでした-

NoResultFound: No row was found for one()

one()メソッドは、「アイテムが見つかりません」と「複数のアイテムが見つかりました」を別々に処理することを想定しているシステムに役立ちます。

スカラー()

それはone()メソッドを呼び出し、成功すると次のように行の最初の列を返します-

session.query(Customers).filter(Customers.id == 3).scalar()

これは、次のSQL文を生成します-

SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
WHERE customers.id = ?