]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Tweaking to fethcmany/all in Python code
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 18 May 2020 07:42:00 +0000 (19:42 +1200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 18 May 2020 07:55:34 +0000 (19:55 +1200)
psycopg3/cursor.py

index a41cd58501298a0461fe395c78d779a7fb52f448..3582bccca640d53f54703cb8c0bab14f41a09d87 100644 (file)
@@ -304,25 +304,34 @@ class Cursor(BaseCursor):
             size = self.arraysize
 
         rv: List[Sequence[Any]] = []
-        while len(rv) < size:
-            row = self._transformer.load_row(self._pos)
+        pos = self._pos
+        load = self._transformer.load_row
+
+        for _ in range(size):
+            row = load(pos)
             if row is None:
                 break
-            self._pos += 1
+            pos += 1
             rv.append(row)
 
+        self._pos = pos
         return rv
 
     def fetchall(self) -> List[Sequence[Any]]:
         self._check_result()
+
         rv: List[Sequence[Any]] = []
+        pos = self._pos
+        load = self._transformer.load_row
+
         while 1:
-            row = self._transformer.load_row(self._pos)
+            row = load(pos)
             if row is None:
                 break
-            self._pos += 1
+            pos += 1
             rv.append(row)
 
+        self._pos = pos
         return rv
 
 
@@ -383,26 +392,35 @@ class AsyncCursor(BaseCursor):
         if size is None:
             size = self.arraysize
 
+        pos = self._pos
+        load = self._transformer.load_row
         rv: List[Sequence[Any]] = []
-        while len(rv) < size:
-            row = self._transformer.load_row(self._pos)
+
+        for i in range(size):
+            row = load(pos)
             if row is None:
                 break
-            self._pos += 1
+            pos += 1
             rv.append(row)
 
+        self._pos = pos
         return rv
 
     async def fetchall(self) -> List[Sequence[Any]]:
         self._check_result()
+
         rv: List[Sequence[Any]] = []
+        pos = self._pos
+        load = self._transformer.load_row
+
         while 1:
-            row = self._transformer.load_row(self._pos)
+            row = load(pos)
             if row is None:
                 break
-            self._pos += 1
+            pos += 1
             rv.append(row)
 
+        self._pos = pos
         return rv