如何使用Python和MySQL连接器检索数据

时间:2016-01-13 17:45:28

标签: python mysql mysql-connector

我有一个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中运行它时,在最后一步之后,我可以看到光标中的内容 enter image description here

如何在字典中找到光标中的内容?我一直尝试失败,但我无法弄清楚。

2 个答案:

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

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}