" KeyError:0"读取一行时

时间:2015-03-10 15:45:04

标签: python mysql

我从数据库中检索数据并从此方法中重新启动它。

  def _db_execute(s, query, data=None, return_data=False):

        con = mdb.connect(s.sql_detail['host'], s.sql_detail['user'], s.sql_detail['pass'], s.sql_detail['db'], cursorclass=mdb.cursors.DictCursor)
        with con:
            cur = con.cursor()
            if type(data) in [ list, tuple ] and len(data) != 0:
                if data[0] in [ list, tuple ]:
                    cur.executemany(query, (item for item in data))
                else:
                    cur.execute(query, data)
            elif data != None:
                cur.execute(query, [data])
            else:
                cur.execute(query)
            if return_data:
                data = cur.fetchall()
                if len(data) == 0:
                    data = None
                return data

以下方法检索数据。

 def retrieve_portal_credetials(self):

        if(self.valid_user()):

            query2 ='''SELECT `group`,`username`,`password` FROM db.users u, db.groups g, db.user_groups i where u.userid=i.user_id and g.group_id = i.groupd_id and u.username=%s'''

            portal_data= self._db_execute(query=query2, data = self.username, return_data = True)

        return portal_data

我尝试将数据分配给变量

rows = auth_usr.retrieve_portal_credetials()



                                #list_of_portaldata = list(portal_data)
                                #s.data.update({'groups_list': [val]})
                                #val=   list_of_portaldata

                                for row in rows:


                                    portal_group = row[0]
                                    portal_username = row[1]
                                    portal_password = row[2]                                

当我通过代码进行调试时,我发现它在portal_group = row[0]处发生错误,我收到了错误KeyError: 0

我理解的是,行没有0键。这就是我得到这个错误的原因。但是,在调试器中它显示了3行变量。任何人都可以给出任何解决方法吗?

1 个答案:

答案 0 :(得分:0)

检查调试器中显示的数据结构后。

我使用以下语法来访问数据。

portal_group = row['group']
portal_username = row['username']
portal_password = row['password']