我有一个MySQL数据库,其中包含一个包含服务(google,reddit等)和密码的表。我想查询db(SELECT * FROM pwds)并将它们添加到Python dict中,以便dict的键是服务,值是密码。密码[' google'] =' G4sR0 * KMVC',例如。这就是我到目前为止所拥有的:
Passwords = {} #Dictionary to store service and password
cnx = mysql.connector.connect(user='Bob', password='foobar', host='127.0.0.1', database='passwords')
query = ("SELECT * FROM pwds")
cursor = cnx.cursor(dictionary=True)
cursor.execute(query)
当我在iPython中运行它时,在最后一步之后,我可以看到光标中的内容
如何在字典中找到光标中的内容?我一直尝试失败,但我无法弄清楚。
答案 0 :(得分:0)
Passwords = {} #Dictionary to store service and password
cnx = mysql.connector.connect(user='Bob', password='foobar', host='127.0.0.1', database='passwords')
query = ("SELECT * FROM pwds")
cursor = cnx.cursor(dictionary=True)
cursor.execute(query)
for row in cursor:
Passwords[row['service']] = row['password']
这可能是您正在寻找的
由于行实际上是从mysql
库中作为dict返回的,因此您将访问各行"列"和任何其他词典一样。
简而言之,因为字典的工作方式是将key
分配给value
,所以:
myDict = {key : val, key : val}
每个密钥都是唯一的,您可以使用密钥中的任何内容访问它们。
myDict = {'name' : 'Torxed', 'type' : 'Funny guy'}
myDict['name']
mysql
和上面的字典之间的唯一区别是mysql
返回每行的字典,但每个行的访问方式相同。
mysqlRows = [ {'name' : 'Torxed', 'type' : 'Funny guy'}, {'name' : 'Amanda', 'type' : 'Has a panda?'} ]
for row in mysqlRows:
print['name']
您想要的是,从您的mysql
结果中获取值,并将它们存储在您自己的key-slot
中dictionary
:
Passwords[key] = val
转换为:
Passwords[ row['service'] ] = row['password']
答案 1 :(得分:0)
这应该这样做:
passwords = dict([(row["service"], row["password"]) for row in cursor])
或者使用词典理解(Python 2.7 +中提供):
passwords = {row["service"]: row["password"] for row in cursor}