我一直在尝试创建一个嵌套的for循环,但由于某种原因,内部的循环只循环一次,并且我不知道为什么。我已经将我的代码减少到最低限度,只是为了弄清楚发生了什么:
pupil = db.session.query(Pupil).all()
result = db.session.query(Pupil_OLD).all()
for row in pupil:
for sublist in result:
print("sublist"+str(sublist.PUPIL_ID))
print("pupil"+str(row.PUPIL_ID))这会产生以下结果:
pupil1
sublist1
sublist2
sublist3
pupil2
pupil3而它应该生成
pupil1
sublist1
sublist2
sublist3
pupil2
sublist1
sublist2
sublist3
pupil3
sublist1
sublist2
sublist3有人知道我做错了什么吗?
发布于 2017-07-12 02:34:49
我假设result是一个接近尾声的生成器。
您可以像这样重置它:
pupil = db.session.query(Pupil).all()
for row in pupil:
result = db.session.query(Pupil_OLD).all()
for sublist in result:
print("sublist"+str(sublist.PUPIL_ID))
print("pupil"+str(row.PUPIL_ID))将其转换为列表是另一种选择,但您可能会错过很酷的生成器;)
抛开我对生成器的喜爱不谈,如果重置生成器意味着重新查询数据库,那么使用列表可能会更好。
发布于 2017-07-12 02:36:29
你应该做像这样的事情
pupil = db.session.query(Pupil).all()
result = list(db.session.query(Pupil_OLD).all())因此,db.session.query(Pupil_OLD).all()的结果看起来是一个生成器,它被转换成一个不会像生成器那样被消耗的列表。
https://stackoverflow.com/questions/45042159
复制相似问题