所以,我能够从MySQL数据库中获取信息。但是,我尝试将数据库导入为字典,以便我可以比较" username"进入"等级"那个用户但是,它似乎将其作为列表。这是我的代码:
user_name = self.uInputUsername.text()
# user_pass = self.UinputPass.text()
"""
User inputs username
"""
con = mdb.connect(host="<hostIP>", user="<db_username>", passwd="<db_user_pass>", db="<db_name>")
list_cursor = con.cursor()
dict_cursor = con.cursor(MySQLdb.cursors.DictCursor)
with con:
cur = con.cursor()
cur.execute("SELECT * FROM `users`")
rows = cur.fetchall()
for row in rows:
print(row)
然后当前的输出是:
(4L, 'Jack', 'Polluck', 'webmaster@python.org', 'very-secret', '', 0, 0L)
我试图获得:
{'firstname':'Jack','password':'verysecret','something':'','level':'0','active':'0L'}
我相信以上将是正确的字典输出。那么如何将其创建为字典输出?就像第六列(等级)== 0然后做动作一样?或者如果第六列== 1然后再做一次行动?
基本上,比较&#39;名称&#39;到了&#39;级别&#39;那个名字。
谢谢你们!我知道在这里提问可能非常粗糙,所以希望这不仅会帮助我,还会帮助其他人。
最佳! Ñ
答案 0 :(得分:0)
使用花括号创建字典,因此您可以直接将列表转换为字典。假设row是您获取的结果。因此,
rows = ['4L', 'Jack', 'Polluck', 'webmaster@python.org', 'very-secret', '', 0, '0L']
rows_dic = {'firstname': rows[1],'password': rows[4],'something': rows[5],'level': rows[6],'active': rows[7]}
if rows[6] == 0:
print('do something')
elif rows[6] == 1:
print('do something else')
答案 1 :(得分:0)
由于您已经创建了字典光标dict_cursor
,因此您应该使用它而不是创建另一个列表光标。
with con:
dict_cursor.execute("SELECT * FROM `users`")
rows = dict_cursor.fetchall()
for row in rows:
print(row)