def _iter_events(self):
        it = self.zodb_root['conferences'].itervalues()
        total = len(self.zodb_root['conferences'])
        all_events_query = Event.find(is_deleted=False).options(undefer('_last_friendly_contribution_id'),
                                                                undefer('_last_friendly_session_id'))
        if self.parallel:
            n, i = self.parallel
            it = (e for e in it if int(e.id) % n == i)
            total = int(ceil(total / n))
            all_events_query = all_events_query.filter(Event.id % n == i)
        if self.quiet:
            it = verbose_iterator(it, total, attrgetter('id'), attrgetter('title'))
        all_events = {e.id: e for e in all_events_query}
        for old_event in self.flushing_iterator(it):
            event = all_events.get(int(old_event.id))
            if event is None:
                self.print_error(cformat('%{red!}Event is only in ZODB but not in SQL'), event_id=old_event.id)
                continue
            yield old_event, event