]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Add row_factory argument to connection.execute()
authorDenis Laxalde <denis.laxalde@dalibo.com>
Thu, 11 Feb 2021 16:25:34 +0000 (17:25 +0100)
committerDenis Laxalde <denis.laxalde@dalibo.com>
Thu, 11 Feb 2021 16:25:34 +0000 (17:25 +0100)
psycopg3/psycopg3/connection.py
tests/test_connection.py
tests/test_connection_async.py

index 0caca8bca249f756da320e516527bcb34f1e1abb..8f0c93281234bb833bd73e7367850b27095cf29c 100644 (file)
@@ -470,9 +470,10 @@ class Connection(BaseConnection):
         query: Query,
         params: Optional[Params] = None,
         prepare: Optional[bool] = None,
+        row_factory: Optional[RowFactory] = None,
     ) -> "Cursor":
         """Execute a query and return a cursor to read its results."""
-        cur = self.cursor()
+        cur = self.cursor(row_factory=row_factory)
         return cur.execute(query, params, prepare=prepare)
 
     def commit(self) -> None:
@@ -612,8 +613,9 @@ class AsyncConnection(BaseConnection):
         query: Query,
         params: Optional[Params] = None,
         prepare: Optional[bool] = None,
+        row_factory: Optional[RowFactory] = None,
     ) -> "AsyncCursor":
-        cur = await self.cursor()
+        cur = await self.cursor(row_factory=row_factory)
         return await cur.execute(query, params, prepare=prepare)
 
     async def commit(self) -> None:
index 398900793bdbf1ae9dd69005e5bc566d4639c478..aef5825ac34ae60fd34ffb81387ee27a72ac04be 100644 (file)
@@ -481,6 +481,9 @@ def test_execute(conn):
     cur = conn.execute("select 12, 22")
     assert cur.fetchone() == (12, 22)
 
+    cur = conn.execute("select 1, 2, 1, 2", row_factory=lambda cur: set)
+    assert cur.fetchone() == {1, 2}
+
 
 def test_str(conn):
     assert "[IDLE]" in str(conn)
index 71bfb6a1d0bfa1c858a8707cd347f0d40cbd71f9..06da3ecfcb09bae29862edf19115debca737e657 100644 (file)
@@ -499,6 +499,9 @@ async def test_execute(aconn):
     cur = await aconn.execute("select 12, 22")
     assert await cur.fetchone() == (12, 22)
 
+    cur = await aconn.execute("select 1, 2, 1, 2", row_factory=lambda cur: set)
+    assert await cur.fetchone() == {1, 2}
+
 
 async def test_str(aconn):
     assert "[IDLE]" in str(aconn)