diff --git a/dataset/persistence/util.py b/dataset/persistence/util.py index 5197aaf..c9930e3 100644 --- a/dataset/persistence/util.py +++ b/dataset/persistence/util.py @@ -24,10 +24,8 @@ class ResultIter(object): if not isgenerator(result_proxies): result_proxies = iter((result_proxies, )) self.result_proxies = result_proxies - self.count = 0 - if not self._next_rp(): - raise StopIteration + self.rp = None def _next_rp(self): try: @@ -39,6 +37,9 @@ class ResultIter(object): return False def __next__(self): + if self.rp is None: + if not self._next_rp(): + raise StopIteration row = self.rp.fetchone() if row is None: if self._next_rp(): diff --git a/test/test_persistence.py b/test/test_persistence.py index aede68a..4f23c52 100644 --- a/test/test_persistence.py +++ b/test/test_persistence.py @@ -275,3 +275,8 @@ class TableTestCase(unittest.TestCase): keys = list(res.next().keys()) assert keys[0] == 'temperature' assert keys[1] == 'place' + + def test_empty_query(self): + m = self.tbl.find(place='not in data') + l = list(m) # exhaust iterator + assert len(l) == 0