您的位置:首页 > 编程语言 > Go语言

pymongo 对游标进行for循环操作需要注意的问题

2016-07-14 11:17 316 查看
游标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 %}

 <ul class="dept-doc">

<li class="dept-doc-li02"><tt><a href="#">{{ i.name }}</a></tt> <p>全部</p><p>{{ i.level }}</p></li>

<li class="dept-doc-li03">

<span>擅长:</span>{{ i.goodat }}

</li>

</ul>

{% endfor %}



因此,我们可以对代码进行简单的修改来解决这个问题:

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)

再将模板占位符dep_doc赋值给_dep_doc即可,显示页面如下图:



发生这总情况的原因目前还不得而知,只是在实际操作中发现这个问题,希望后续有更多的发现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: