2016-04-07 5 views
0

は、あなたがこのコードを持っているとしましょう:データベースはSQLAlchemyでいつ実際に照会されますか?

products = session.query(Products) 
query = products.filter(Products.productVendor == 'Classic Metal Creations') 

for q in query: 
    print q 

は、データベースが照会されたとき?ここでデータベースのクエリ回数は何回ですか?

などです。 filter()productsに設定した場合、元のクエリから取得した結果セットでその操作をクライアント側で実行するだけですか?

答えて

1

データベースは、query、つまりfor q in queryという行を繰り返したときに実際にクエリされます。これには、クエリにall()first()scalar()などが含まれます。 filter()は、フィルタを含むようにクエリを生成的に変更するだけです。

+0

これを明確にするために、クエリを反復処理するたびにデータベースにクエリを実行しますか?これは、正確に同じ結果セットを反復処理する唯一の方法は、クエリ上で '.all()'を実行し、それを反復することであることを意味します。 – joshualan

+0

@joshualanはい、まさにそうです。 – univerio

関連する問題