code: def get_cursor(self):
          
          if self.connection is None:
              try:
                  self.open_connection()
              except OperationalError:
                  raise
          try:
              cursor = self.connection.cursor()
              cursor.execute('SELECT SQLITE_VERSION()')
              data = cursor.fetchone()
              LOGGER.debug("SQLite version: %s" % data)
              # Check if we have some tables, if not create them
              sql = 'select sql from sqlite_master where type = \'table\';'
              cursor.execute(sql)
              data = cursor.fetchone()
              LOGGER.debug("Tables: %s" % data)
              if data is None:
                  LOGGER.debug('No tables found')
                  sql = (
                      'create table metadata (hash varchar(32) primary key,'
                      'json text, xml text);')
                  LOGGER.debug(sql)
                  cursor.execute(sql)
                  # data = cursor.fetchone()
                  cursor.fetchone()
              else:
                  LOGGER.debug('metadata table already exists')
  
              return cursor
          except sqlite.Error as e:
              LOGGER.debug("Error %s:" % e.args[0])
              raise
docs: Get a cursor for the active connection.
  
          The cursor can be used to execute arbitrary queries against the
          database. This method also checks that the metadata table exists in
          the schema, and if not, it creates it.
  
          :returns: A valid cursor opened against the connection.
          :rtype: sqlite.
  
          :raises: An sqlite.Error will be raised if anything goes wrong.