Fix too early StopIteration on empty result sets

Fixes #77, thanks to @hfaran for report
This commit is contained in:
Stefan Wehrmeyer
2014-02-16 13:48:56 +01:00
parent 582af184de
commit ea31943e18
2 changed files with 9 additions and 3 deletions
+4 -3
View File
@@ -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():
+5
View File
@@ -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