如何使用 Python 和 MySQL 连接器检索数据
How to retrieve data using Python and MySQL connector
我有一个 MySQL 数据库,其中 table 包含一项服务(google、reddit 等)和一个密码。我想查询 db (SELECT * FROM pwds) 并将它们添加到 Python 字典中,以便字典的键是服务,值是密码。例如,密码['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 中 运行 this 时,在最后一步之后,我可以看到光标中的内容
如何获取字典中光标处的内容?一直试不成功,想不通
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
库中作为字典返回的,因此您将像访问任何其他字典一样访问单个行 "columns"。
简而言之,因为字典是通过将 key
分配给 value
来工作的,就像这样:
myDict = {key : val, key : val}
每个密钥都是唯一的,您可以使用密钥中的任何内容访问它们。
myDict = {'name' : 'Torxed', 'type' : 'Funny guy'}
myDict['name']
mysql
和上面的字典之间的唯一区别是 mysql
returns 每行一个字典,但它会以相同的方式访问每一行。
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']
应该这样做:
passwords = dict([(row["service"], row["password"]) for row in cursor])
或者使用字典理解(在 Python 2.7+ 中可用):
passwords = {row["service"]: row["password"] for row in cursor}
我有一个 MySQL 数据库,其中 table 包含一项服务(google、reddit 等)和一个密码。我想查询 db (SELECT * FROM pwds) 并将它们添加到 Python 字典中,以便字典的键是服务,值是密码。例如,密码['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 中 运行 this 时,在最后一步之后,我可以看到光标中的内容
如何获取字典中光标处的内容?一直试不成功,想不通
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
库中作为字典返回的,因此您将像访问任何其他字典一样访问单个行 "columns"。
简而言之,因为字典是通过将 key
分配给 value
来工作的,就像这样:
myDict = {key : val, key : val}
每个密钥都是唯一的,您可以使用密钥中的任何内容访问它们。
myDict = {'name' : 'Torxed', 'type' : 'Funny guy'}
myDict['name']
mysql
和上面的字典之间的唯一区别是 mysql
returns 每行一个字典,但它会以相同的方式访问每一行。
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']
应该这样做:
passwords = dict([(row["service"], row["password"]) for row in cursor])
或者使用字典理解(在 Python 2.7+ 中可用):
passwords = {row["service"]: row["password"] for row in cursor}