Python pymysql - 遍历mysql表键和值

时间:2017-02-27 12:30:32

标签: python mysql pymysql

我是python pymysql的新手(我在Ruby之前用过Mysql2 gem), 我想从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}

由于

3 个答案:

答案 0 :(得分:2)

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)

答案 1 :(得分:1)

您正在寻找的代码是:

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

答案 2 :(得分:0)

Using pymysql, you need to declare the cursor as a dictionary type like below:

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)