Python -- list index out of range -- on a simple SELECT statement?
Question: I'm new to Python, so maybe I'm making a newbie mistake. But this doesn't seem
the kind of error I should get in this circumstance.

On a very simple SELECT statement, I'm getting a "list index out of range"
error.

    
    
      sql = """
            begin tran
            -- Several update statements are in this block.
    
            commit tran"""
        sql = sql.format(tablename=self.tablename, **self.mappings)
        #print(sql)
        self.cursor.execute(sql, (self.catalog_id,self.catalog_id,self.catalog_id,))
    
    
        self.cursor.execute("SELECT CaptionText, DisplayOrder FROM dbo.SizeOrder where CaptionText is not NULL and len(CaptionText)>0")  #This is the line that breaks!
    
        size_order = {row[0].lower(): row[1] for row in self.cursor}
    

It's the next to last row that breaks. It's not doing any funny formatting. I
don't do any of the substitutions in this problem query. When run directly
against the DB, it returns over 300 records.

The trace output definitely implicates that line of code. I really suspected
the next line b/c it involves indexes. But a return after the execute helped
nothing.

    
    
        Traceback (most recent call last):
      File "import.py", line 782, in <module>
        main(sys.argv)
      File "import.py", line 167, in main
        db.transform_catalog((len(args)>4 and args[4] == "--skipimages") or (len(args)>5 and args[5] == "--skipimages") )
      File "import.py", line 235, in transform_catalog
        self.do_transform(skipImages)
      File "import.py", line 264, in do_transform
        self.insert_size_types()
      File "import.py", line 501, in insert_size_types
        self.cursor.execute("SELECT CaptionText, DisplayOrder FROM dbo.SizeOrder  where CaptionText is not NULL and len(Capt
    ionText)>0")
      File "C:\Python33\lib\site-packages\pypyodbc.py", line 1449, in execute
        self._free_stmt(SQL_CLOSE)
      File "C:\Python33\lib\site-packages\pypyodbc.py", line 1971, in _free_stmt
        check_success(self, ret)
      File "C:\Python33\lib\site-packages\pypyodbc.py", line 986, in check_success
        ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
      File "C:\Python33\lib\site-packages\pypyodbc.py", line 951, in ctrl_err
        state = err_list[0][0]
    IndexError: list index out of range
    

What could I be doing wrong? Thanks!


Answer: Definitely a bug. An unrelated error during some result processing in the
library's internals, not input-related. [DeepSpace's
link](http://stackoverflow.com/questions/31864360/python-list-index-out-of-
range-on-a-simple-select-statement/31865193#comment51648070_31864360) is the
likely cause.

