def _finish_tpc(self, command, fallback, xid): if xid: # committing/aborting a received transaction. if self.status != consts.STATUS_READY: raise exceptions.ProgrammingError( "tpc_commit/tpc_rollback with a xid " "must be called outside a transaction") self._execute_tpc_command(command, xid) else: # committing/aborting our own transaction. if not self._tpc_xid: raise exceptions.ProgrammingError( "tpc_commit/tpc_rollback with no parameter " "must be called in a two-phase transaction") if self.status == consts.STATUS_BEGIN: fallback() elif self.status == consts.STATUS_PREPARED: self._execute_tpc_command(command, self._tpc_xid) else: raise exceptions.InterfaceError( 'unexpected state in tpc_commit/tpc_rollback') self.status = consts.STATUS_READY self._tpc_xid = None
def poll(self): if self.status == consts.STATUS_SETUP: self.status = consts.STATUS_CONNECTING return consts.POLL_WRITE if self.status == consts.STATUS_CONNECTING: res = self._poll_connecting() if res == consts.POLL_OK and self._async: return self._poll_setup_async() return res if self.status in (consts.STATUS_READY, consts.STATUS_BEGIN, consts.STATUS_PREPARED): res = self._poll_query() if res == consts.POLL_OK and self._async and self._async_cursor: # Get the cursor object from the weakref curs = self._async_cursor() if curs is None: util.pq_clear_async(self._pgconn) raise exceptions.InterfaceError( "the asynchronous cursor has disappeared") libpq.PQclear(curs._pgres) curs._pgres = util.pq_get_last_result(self._pgconn) try: curs._pq_fetch() finally: self._async_cursor = None return res return consts.POLL_ERROR
def check_closed_(self, *args, **kwargs): if self.closed: raise exceptions.InterfaceError('connection already closed') return func(self, *args, **kwargs)
def check_closed_(self, *args, **kwargs): if self.closed: raise exceptions.InterfaceError("lobject already closed") return func(self, *args, **kwargs)