我从数据库中检索数据并从此方法中重新启动它。
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行变量。任何人都可以给出任何解决方法吗?
答案 0 :(得分:0)
检查调试器中显示的数据结构后。
我使用以下语法来访问数据。
portal_group = row['group']
portal_username = row['username']
portal_password = row['password']