I'm using a legacy database that has a table with multiple columns in
the primary key (If I could, I would change it).

When inserting into this table, I get the following error:

  File "/home/loren/dev/web2py/gluon/dal.py", line 774, in insert
    return dict( [ (k,fields[k]) for k in table._primarykey ])
TypeError: list indices must be integers, not str

Some context for this line, in dal.py:

        except Exception, e:
            if isinstance(e,self.integrity_error_class()):
                return None
            raise e
        if hasattr(table,'_primarykey'):
            return dict( [ (k,fields[k]) for k in table._primarykey ])

        id = self.lastrowid(table)
        if not isinstance(id,int):
            return id
        rid = Reference(id)


I was able to fix this by simply replacing the line with:

return dict([(k[0].name, k[1]) for k in fields if k[0].name in
table._primarykey])

Reply via email to