我想知道当我使用query.get或query.all这样的查询方法时,sqlalchemy模型实例何时会填充数据库内容。
是在这些方法调用时延迟加载,还是在我迭代查询结果时完成了有效的数据库查询和实例填充?
发布于 2017-02-16 14:45:19
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)
https://stackoverflow.com/questions/42275722
复制