2017-02-16 6 views
0

私はquery.getやquery.allのような照会メソッドを使用すると、sqlalchemyモデルのインスタンスにデータベースの内容が入力されるのが不思議です。sqlalchemyインスタンスの母集団

これらのメソッド呼び出しで遅延ロードされているのですか、または有効なデータベースクエリとインスタンスの集計は、クエリ結果を反復処理するときに実行されますか?

答えて

1

sqlalclemyにはクエリ実行者があります。first()get()all()、...これらのメソッドをクエリオブジェクトで呼び出すと、データベースからデータがフェッチされます。これらのメソッド呼び出しの1つの後に、データがあります。ループすると、すでにフェッチされたデータを反復処理します。

のは、あなたがクラスUser持っているとしましょう:次のように最後の行で

query = session.query(User) #returns query object 
query = query.filter(name=='John') #specified query criteria 
user = query.first() #now your user instance populated 
print(user.name) #John 
users = query.all() #a list of User instance, populated 

、今あなたが取り込まUserインスタンスのリストを持って、そのリストを反復処理することができます。

for user in users: 
    print(user.name, user.id) 
+0

はありがとうご、あなたは答えは私には非常に明確です:) – utopman

関連する問題