Trouble adding data to Solr with python?
Question: I am using python 3.4.3 and sunburnt to add some document to Solr(5.2.1). The
following code is directly from the Sunburnt documentation:

    
    
    import sunburnt
    
    si=sunburnt.SolrInterface("http://localhost:8983/solr/")
    
    document = {"id":"0553573403",
            "cat":"book",
            "name":"A Game of Thrones",
            "price":7.99,
            "inStock": True,
            "author_t":
            "George R.R. Martin",
            "series_t":"A Song of Ice and Fire",
            "sequence_i":1,
            "genre_s":"fantasy"}
    
    si.add(document)
    

and when I run the above command I get the following:

    
    
    NameError                                 Traceback (most recent call last)
    <ipython-input-1-1008a9ce394f> in <module>()----> 1 import sunburnt
      2 
      3 si= sunburnt.SolrInterface("http://localhost:8983/solr/")
      4 
      5 document = {"id":"0553573403",
    
    /Users/rmohan/venv_py3/lib/python3.4/site-packages/sunburnt/__init__.py in <module>()
      1 from __future__ import absolute_import
      2 
    ----> 3 from .strings import RawString
      4 from .sunburnt import SolrError, SolrInterface
      5 
    
    /Users/rmohan/venv_py3/lib/python3.4/site-packages/sunburnt/strings.py in <module>()
      2 
      3 
    ----> 4 class SolrString(unicode):
      5     # The behaviour below is only really relevant for String fields rather
      6     # than Text fields - most queryparsers will strip these characters out
    
    NameError: name 'unicode' is not defined
    

So I tried the same document with pysolr as follows:

    
    
    import pysolr
    solr = pysolr.Solr('http://localhost:8983/solr/', timeout=10)
    
    document = [{"id":"0553573403",
            "cat":"book",
            "name":"A Game of Thrones",
            "price":7.99,
            "inStock": True,
            "author_t":
            "George R.R. Martin",
            "series_t":"A Song of Ice and Fire",
            "sequence_i":1,
            "genre_s":"fantasy"}]
    
    solr.add(document)
    

which give the following:

    
    
    /Users/rmohan/venv_py3/lib/python3.4/site-packages/pysolr.py in _scrape_response(self, headers, response)
    443         dom_tree = None
    444 
    --> 445         if response.startswith('<?xml'):
    446             # Try a strict XML parse
    447             try:
    
    TypeError: startswith first arg must be bytes or a tuple of bytes, not str
    

I did some googling but couldn't find a definitive answer on how to resolve
the unicode or the bytes issue with the inputs. I tried converting strings to
both bytes and unicode but nothing seem to work.

If someone knows a better way to insert docs in SOLR please do share. Any help
will be greatly appreciated.


Answer: I figured it out, the file pysolr.py has

    
    
    if response.startswith('<?xml'):
    

which needed to be changed to

    
    
    if response.startswith(b'<?xml'):
    

More information at : <https://github.com/toastdriven/pysolr/issues/159>

