2017-02-16 72 views
0

當我使用query.get或query.all等查詢方法時,我想知道sqlalchemy模型實例是否填充了數據庫內容。sqlalchemy實例人口

這是惰性加載這些方法調用,或者當我迭代查詢結果時,有效的數據庫查詢和實例填充完成嗎?

回答

1

sqlalclemy具有查詢執行人:first()get()all(),......所以,當你調用查詢對象的這些方法從數據庫中獲取數據。在其中一個方法調用之後,您將獲得數據。循環時,它會迭代已獲取的數據。

假設你有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 

到最後一行,現在你有填充用戶實例的列表,可以在該列表迭代如下:

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

謝謝您,你的回答對我來說很清楚:) – utopman