Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;KeyError:0";读取获取的行时_Python_Mysql - Fatal编程技术网

Python &引用;KeyError:0";读取获取的行时

Python &引用;KeyError:0";读取获取的行时,python,mysql,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:

我从数据库中检索数据,并从这个方法中重新运行它

  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\u group=row[0]
,我得到了错误
KeyError:0


我所理解的是,行没有0键。这就是为什么我会犯这个错误。但是,在调试器中,它在第行下显示了3个变量。有人能给出任何提示来修复此问题吗?

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

我使用以下语法访问数据

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

hasattr(obj,“iter”或
isinstance(e,collections.Iterable)
是检查Iterable()的标准方法是
row
类似字典的对象还是类似列表的对象?事实上,您得到的是
KeyError
而不是
indexer
,这表明它类似于dict。。。