From dbbfe23a4c1dbfec31e967a89249e80df45046a0 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Sat, 28 Mar 2020 02:02:10 +1300 Subject: [PATCH] Added binary results from cursor --- psycopg3/connection.py | 6 ++++-- psycopg3/cursor.py | 6 +++++- tests/test_cursor.py | 14 ++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/psycopg3/connection.py b/psycopg3/connection.py index eff6503e4..21e714ddf 100644 --- a/psycopg3/connection.py +++ b/psycopg3/connection.py @@ -34,8 +34,10 @@ class BaseConnection: # name of the postgres encoding (in bytes) self.pgenc = None - def cursor(self, name=None): - return self.cursor_factory(self) + def cursor(self, name=None, binary=False): + if name is not None: + raise NotImplementedError + return self.cursor_factory(self, binary=binary) @property def codec(self): diff --git a/psycopg3/cursor.py b/psycopg3/cursor.py index 030948d74..d92c16b16 100644 --- a/psycopg3/cursor.py +++ b/psycopg3/cursor.py @@ -42,7 +42,11 @@ class BaseCursor: vars = reorder_params(vars, order) params, types = self._transformer.adapt_sequence(vars, formats) self.conn.pgconn.send_query_params( - query, params, param_formats=formats, param_types=types + query, + params, + param_formats=formats, + param_types=types, + result_format=int(self.binary), ) else: self.conn.pgconn.send_query(query) diff --git a/tests/test_cursor.py b/tests/test_cursor.py index f99c6868e..e81684345 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -23,9 +23,23 @@ def test_execute_sequence(conn): def test_fetchone(conn): cur = conn.cursor() cur.execute("select %s, %s, %s", [1, "foo", None]) + assert cur._result.fformat(0) == 0 + row = cur.fetchone() assert row[0] == 1 assert row[1] == "foo" assert row[2] is None row = cur.fetchone() assert row is None + + +def test_execute_binary_result(conn): + cur = conn.cursor(binary=True) + cur.execute("select %s, %s", ["foo", None]) + assert cur._result.fformat(0) == 1 + + row = cur.fetchone() + assert row[0] == "foo" + assert row[1] is None + row = cur.fetchone() + assert row is None -- 2.47.3