code: def cursor(self):
          
          self._assert_open()
          if self.mars_enabled:
              in_tran = self._conn.tds72_transaction
              if in_tran and self._dirty:
                  try:
                      return _MarsCursor(self,
                                         self._conn.create_session(self._tzinfo_factory),
                                         self._tzinfo_factory)
                  except (socket.error, OSError) as e:
                      self._conn.close()
                      raise
              else:
                  try:
                      return _MarsCursor(self,
                                         self._conn.create_session(self._tzinfo_factory),
                                         self._tzinfo_factory)
                  except (socket.error, OSError) as e:
                      if e.errno not in (errno.EPIPE, errno.ECONNRESET):
                          raise
                      self._conn.close()
                  except ClosedConnectionError:
                      pass
                  self._assert_open()
                  return _MarsCursor(self,
                                     self._conn.create_session(self._tzinfo_factory),
                                     self._tzinfo_factory)
          else:
              return Cursor(self,
                            self._conn.main_session,
                            self._tzinfo_factory)
docs: Return cursor object that can be used to make queries and fetch
          results from the database.