リターンリストとスカラー
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 = ?