2017-02-27 161 views
1

我是新來的蟒蛇pymysql, (我紅寶石Mysql2寶石之前使用),我想拿到鑰匙,並從MySQL表中的值,並做一些動作:Python的pymysql - 遍歷MySQL表鍵和值

例如:

dbconnection = pymysql.connect(host=mysql_hostname, user=mysql_username, password=mysql_pass, db=mysql_schema, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 
cursor = dbconnection.cursor() 
_SQL = (""" 
     select * ... 
     """) 

cursor.execute(_SQL) 
result = cursor.fetchall() 
for row in result: 
    print(row) 
    print("\n") 
    # How can I access each key and each value for example: STATUS is the value and 3 is the key 
    # I want to do something like this: 
    #'if the value of 'CAP' > 1: change the value of status where the ID key 
    # cursor.execute("UPDATE <table> SET row[STATUS]='1' WHERE ID='row[ID]'") 

輸出:

{'STATUS': 3, 'ID': 10, 'CAP': 1} 
{'STATUS': 3, 'ID': 11, 'CAP': 2} 
{'STATUS': 3, 'ID': 12, 'CAP': 3} 

由於

+0

你是什麼意思,表**的鍵和值**?一個表可以有多個列。 –

+0

我更新了我的問題,我希望能夠訪問每個結果的密鑰名稱和值名稱 – Berlin

回答

2

A row僅僅是一個dict離子。所以,你可以使用.items()生成的序列鍵和值:

for row in result: 
    for key,value in row.items(): 
     print('The key is %s'%key) 
     print('The value is %s'%value)
+0

right :),從Ruby切換到Python時有點混亂,您是否知道它是否可以使用' pymysql'而不是'MySQL Connector'? – Berlin

+0

@柏林:不幸的是,我不是很熟悉數據庫框架等。 –

+0

好的,無論如何。 – Berlin

1

你正在尋找的代碼是這樣的:

for row in result: 
    if row["CAP"] > 1: 
     cursor.execute("UPDATE <table> SET row[STATUS]='1' WHERE ID='row[ID]'") 
    else: 
     continue 
0

使用pymysql,你需要聲明光標作爲一個字典類型像下面這樣:

import pymysql 

connection = pymysql.connect(host="localhost", user="root", passwd="", database="myraces") 
# cursor = connection.cursor() 
cursor = pymysql.cursors.DictCursor(connection) 

query = "SELECT * FROM `races`" 
cursor.execute(query) 
rows = cursor.fetchall() 
for row in rows: 
    for key, value in row.items(): 
     print(key, value)