0
私はquery.getやquery.allのような照会メソッドを使用すると、sqlalchemyモデルのインスタンスにデータベースの内容が入力されるのが不思議です。sqlalchemyインスタンスの母集団
これらのメソッド呼び出しで遅延ロードされているのですか、または有効なデータベースクエリとインスタンスの集計は、クエリ結果を反復処理するときに実行されますか?
私はquery.getやquery.allのような照会メソッドを使用すると、sqlalchemyモデルのインスタンスにデータベースの内容が入力されるのが不思議です。sqlalchemyインスタンスの母集団
これらのメソッド呼び出しで遅延ロードされているのですか、または有効なデータベースクエリとインスタンスの集計は、クエリ結果を反復処理するときに実行されますか?
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)
はありがとうご、あなたは答えは私には非常に明確です:) – utopman