import notmuch db = notmuch.Database(mode=notmuch.Database.MODE.READ_WRITE) query_str = "tag:this_is_my_test" query1 = notmuch.Query(db, query_str) for msg in query1.search_messages(): msg.freeze() print "At start tags are %s" % ", ".join(msg.get_tags()) msg.add_tag("added_first") query2 = notmuch.Query(db, query_str) for msg2 in query2.search_messages(): msg2.freeze() msg2.add_tag("added_second") msg2.thaw() print "Inside inner loop tags are %s" % ", ".join(msg2.get_tags()) msg.thaw() print "At end tags are %s" % ", ".join(msg.get_tags()) msg.remove_tag("added_first")