将SQL数据库参数作为dict进行比较

时间:2018-03-16 21:20:13

标签: mysql python-2.7 mysqldbcompare

所以,我能够从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;那个名字。

谢谢你们!我知道在这里提问可能非常粗糙,所以希望这不仅会帮助我,还会帮助其他人。

最佳! Ñ

2 个答案:

答案 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)