]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
'pgresult' is part of the Cursor interface
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 2 Apr 2020 05:04:33 +0000 (18:04 +1300)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 2 Apr 2020 05:04:33 +0000 (18:04 +1300)
The same way 'pgconn' is a public property of the Connection.

psycopg3/cursor.py
tests/test_async_cursor.py
tests/test_cursor.py
tests/types/test_numeric.py

index 9e360187b6bcf0a55c1ea277a0322d8aede251f5..4b7a96bf880d896bc397ba5b4fee84ed9face270 100644 (file)
@@ -33,7 +33,7 @@ class BaseCursor:
         from .adapt import Transformer
 
         self._results: List[PGresult] = []
-        self._result: Optional[PGresult] = None
+        self.pgresult: Optional[PGresult] = None
         self._pos = 0
         self._iresult = 0
         self._transformer = Transformer(self)
@@ -89,7 +89,7 @@ class BaseCursor:
         }
         if not badstats:
             self._results = results
-            self._result = results[0]
+            self.pgresult = results[0]
             return
 
         if results[-1].status == ExecStatus.FATAL_ERROR:
@@ -115,7 +115,7 @@ class BaseCursor:
     def nextset(self) -> Optional[bool]:
         self._iresult += 1
         if self._iresult < len(self._results):
-            self._result = self._results[self._iresult]
+            self.pgresult = self._results[self._iresult]
             self._pos = 0
             return True
         else:
@@ -128,12 +128,12 @@ class BaseCursor:
         return rv
 
     def _cast_row(self, n: int) -> Optional[Tuple[Any, ...]]:
-        if self._result is None:
+        if self.pgresult is None:
             return None
-        if n >= self._result.ntuples:
+        if n >= self.pgresult.ntuples:
             return None
 
-        return tuple(self._transformer.cast_row(self._result, n))
+        return tuple(self._transformer.cast_row(self.pgresult, n))
 
 
 class Cursor(BaseCursor):
index 4c0dfd57caf5d8f01029b0763474879fb6739ed0..e896be4b63c68b2d635ff3467aaed667fe312ab7 100644 (file)
@@ -3,9 +3,9 @@ def test_execute_many(aconn, loop):
     rv = loop.run_until_complete(cur.execute("select 'foo'; select 'bar'"))
     assert rv is cur
     assert len(cur._results) == 2
-    assert cur._result.get_value(0, 0) == b"foo"
+    assert cur.pgresult.get_value(0, 0) == b"foo"
     assert cur.nextset()
-    assert cur._result.get_value(0, 0) == b"bar"
+    assert cur.pgresult.get_value(0, 0) == b"bar"
     assert cur.nextset() is None
 
 
@@ -16,7 +16,7 @@ def test_execute_sequence(aconn, loop):
     )
     assert rv is cur
     assert len(cur._results) == 1
-    assert cur._result.get_value(0, 0) == b"1"
-    assert cur._result.get_value(0, 1) == b"foo"
-    assert cur._result.get_value(0, 2) is None
+    assert cur.pgresult.get_value(0, 0) == b"1"
+    assert cur.pgresult.get_value(0, 1) == b"foo"
+    assert cur.pgresult.get_value(0, 2) is None
     assert cur.nextset() is None
index e81684345b68744b566488953f1f58c566e01057..03c87aca873bd99d6f2bae41b273afbf6e85291a 100644 (file)
@@ -3,9 +3,9 @@ def test_execute_many(conn):
     rv = cur.execute("select 'foo'; select 'bar'")
     assert rv is cur
     assert len(cur._results) == 2
-    assert cur._result.get_value(0, 0) == b"foo"
+    assert cur.pgresult.get_value(0, 0) == b"foo"
     assert cur.nextset()
-    assert cur._result.get_value(0, 0) == b"bar"
+    assert cur.pgresult.get_value(0, 0) == b"bar"
     assert cur.nextset() is None
 
 
@@ -14,16 +14,16 @@ def test_execute_sequence(conn):
     rv = cur.execute("select %s, %s, %s", [1, "foo", None])
     assert rv is cur
     assert len(cur._results) == 1
-    assert cur._result.get_value(0, 0) == b"1"
-    assert cur._result.get_value(0, 1) == b"foo"
-    assert cur._result.get_value(0, 2) is None
+    assert cur.pgresult.get_value(0, 0) == b"1"
+    assert cur.pgresult.get_value(0, 1) == b"foo"
+    assert cur.pgresult.get_value(0, 2) is None
     assert cur.nextset() is None
 
 
 def test_fetchone(conn):
     cur = conn.cursor()
     cur.execute("select %s, %s, %s", [1, "foo", None])
-    assert cur._result.fformat(0) == 0
+    assert cur.pgresult.fformat(0) == 0
 
     row = cur.fetchone()
     assert row[0] == 1
@@ -36,7 +36,7 @@ def test_fetchone(conn):
 def test_execute_binary_result(conn):
     cur = conn.cursor(binary=True)
     cur.execute("select %s, %s", ["foo", None])
-    assert cur._result.fformat(0) == 1
+    assert cur.pgresult.fformat(0) == 1
 
     row = cur.fetchone()
     assert row[0] == "foo"
index 0cc53a51c48beaeb805336c0587b85ce904bcb01..7fed199f48b6ee85f6b299b5705532bf1cf17cfb 100644 (file)
@@ -52,6 +52,15 @@ def test_adapt_int(conn, val, expr):
 def test_cast_int(conn, val, pgtype, want):
     cur = conn.cursor()
     cur.execute("select %%s::%s" % pgtype, (val,))
+    assert cur.pgresult.fformat(0) == 0
+    result = cur.fetchone()[0]
+    assert result == want
+    assert type(result) is type(want)
+
+    # test binary
+    cur.binary = True
+    cur.execute("select %%s::%s" % pgtype, (val,))
+    assert cur.pgresult.fformat(0) == 1
     result = cur.fetchone()[0]
     assert result == want
     assert type(result) is type(want)