リターンリストとスカラー

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 = ?