code: async def close(self):
          
          if self._connection is None:
              return
  
          if self._transaction is not None:
              await self._transaction.rollback()
              self._transaction = None
          # don't close underlying connection, it can be reused by pool
          # conn.close()
          self._engine.release(self)
          self._connection = None
          self._engine = None
docs: Close this SAConnection.
  
          This results in a release of the underlying database
          resources, that is, the underlying connection referenced
          internally. The underlying connection is typically restored
          back to the connection-holding Pool referenced by the Engine
          that produced this SAConnection. Any transactional state
          present on the underlying connection is also unconditionally
          released via calling Transaction.rollback() method.
  
          After .close() is called, the SAConnection is permanently in a
          closed state, and will allow no further operations.