游标for循环是在pl/sql块中使用游标最简单的方式,它简化了对游标的处理。当使用游标for循环时,oracle会隐含的打开游标,提取游标数据并关闭游标。
pymongo中也可以用for循环这种简单的方式对游标进行遍历
如下:
dep_doc = db.hospital_doctor.find({"hospital._id": ObjectId(id), "depart_item.id": ObjectId(dp_id)})
disease_list = []
for i in dep_doc:
for j in i["disease"]:
disease_list.append(j)
这样就可以得到dep_doc这个游标中每一个元素中的“disease”字段下的list中的每一个元素,并将这所有元素组成一个新的list--------disease_list
这样做的确十分的方便,但是它也是有问题的:
如果在视图函数中已经对游标dep_doc进行了遍历,那么在jinja2模板中对游标dep_doc的调用会失效,下边的代码将不再会渲染在网页的页面中。
{% for i in dep_doc %}
全部
{{ i.level }}
因此,我们可以对代码进行简单的修改来解决这个问题:
dep_doc = db.hospital_doctor.find({"hospital._id": ObjectId(id), "depart_item.id": ObjectId(dp_id)})
disease_list = []
_dep_doc = []
for i in dep_doc:
_dep_doc.append(i)
for j in i["disease"]:
disease_list.append(j)
发生这总情况的原因目前还不得而知,只是在实际操作中发现这个问题,希望后续有更多的发现。