0

因此,我能够从 MySQL 数据库中获取信息。但是,我正在尝试将数据库作为字典导入,以便可以将“用户名”与该用户的“级别”进行比较。但是,它似乎将其拉为列表。这是我的代码:

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 然后做另一个动作?

本质上,将“名称”与该名称的“级别”进行比较。

多谢你们!我知道在这里提出问题可能会很粗糙,所以希望这不仅能帮助我,也能帮助其他人。

最好的!ñ

4

2 回答 2

0

由于您已经在创建字典游标,dict_cursor因此您应该使用它而不是创建另一个列表游标。

with con:
    dict_cursor.execute("SELECT * FROM `users`")
    rows = dict_cursor.fetchall()
    for row in rows:
        print(row)
于 2018-03-17T01:24:19.910 回答
0

字典是使用大括号创建的,因此您可以直接将列表转换为字典。假设行是您获取的结果。因此,

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')
于 2018-03-17T01:17:56.053 回答