class BaseCopy(Generic[ConnectionType]):
- def __init__(
- self,
- connection: ConnectionType,
- transformer: Transformer,
- result: "PGresult",
- ):
+ def __init__(self, connection: ConnectionType, transformer: Transformer):
self.connection = connection
- self._transformer = transformer
- self.pgresult = result
- self.format = result.binary_tuples
+ self.transformer = transformer
+
+ self.format = self.pgresult.binary_tuples
self._first_row = True
self._finished = False
self._encoding: str = ""
return self._finished
@property
- def pgresult(self) -> Optional["PGresult"]:
- return self._pgresult
-
- @pgresult.setter
- def pgresult(self, result: Optional["PGresult"]) -> None:
- self._pgresult = result
- self._transformer.pgresult = result
+ def pgresult(self) -> "PGresult":
+ pgresult = self.transformer.pgresult
+ assert pgresult, "The Transformer doesn't have a PGresult set"
+ return pgresult
def _ensure_bytes(self, data: Union[bytes, str]) -> bytes:
if isinstance(data, bytes):
out: List[Optional[bytes]] = []
for item in row:
if item is not None:
- dumper = self._transformer.get_dumper(item, self.format)
+ dumper = self.transformer.get_dumper(item, self.format)
out.append(dumper.dump(item))
else:
out.append(None)
self._execute_send(statement, vars, no_pqexec=True)
gen = execute(self.connection.pgconn)
results = self.connection.wait(gen)
+ self._check_copy_results(results)
+ self.pgresult = results[0] # will set it on the transformer too
- self._check_copy_results(results)
- return Copy(
- connection=self.connection,
- transformer=self._transformer,
- result=results[0],
- )
+ return Copy(connection=self.connection, transformer=self._transformer)
class AsyncCursor(BaseCursor["AsyncConnection"]):
self._execute_send(statement, vars, no_pqexec=True)
gen = execute(self.connection.pgconn)
results = await self.connection.wait(gen)
+ self._check_copy_results(results)
+ self.pgresult = results[0] # will set it on the transformer too
- self._check_copy_results(results)
return AsyncCopy(
connection=self.connection,
transformer=self._transformer,
- result=results[0],
)