Python - 从字典列表中提取值(由 SQL 命令生成)
Python - Extract Values from List of Dictionary (generated by SQL command)
早上好,
我正在尝试使用 Python 中的 MySQL 数据库,我需要提取一些数据,例如 table 名称。
所以我运行这个代码:
import pymysql.cursors
conn = pymysql.connect(host='myHost', user='user', password='password', db='test', cursorclass=pymysql.cursors.DictCursor)
a = conn.cursor()
sql="SHOW tables like '%s%'"
a.execute(sql)
rows = a.fetchall()
tables = []
for row in rows:
tables.append(row.values())
但是当我 运行 print(tables)
时,它给我的结果如下:
["dict_values(['table1'])", "dict_values(['table2'])"]
我唯一需要的列表是 ['table1', 'table2', 'etc', 'etc']
。
我该如何解决这个问题?是 SQL 语句导致了这类问题?
谢谢
row.values()
returns 一个 dict_values 对象,其作用类似于列表。
由于您可以假定该列表中只有一个值,因此您可以替换此行:
tables.append(row.values())
有了这个:
tables += row.values()
你应该会得到预期的结果。
您可以使用此代码,唯一需要记住的是 tables.append(row.values()[0])
语法,因为您使用的是字典
的值
import pymysql.cursors
conn = pymysql.connect(host='myHost', user='user', password='password', db='test', cursorclass=pymysql.cursors.DictCursor)
a = conn.cursor()
sql="SHOW tables"
a.execute(sql)
tables = []
rows = a.fetchall()
for row in rows:
tables.append(list(row.values())[0])
早上好,
我正在尝试使用 Python 中的 MySQL 数据库,我需要提取一些数据,例如 table 名称。
所以我运行这个代码:
import pymysql.cursors
conn = pymysql.connect(host='myHost', user='user', password='password', db='test', cursorclass=pymysql.cursors.DictCursor)
a = conn.cursor()
sql="SHOW tables like '%s%'"
a.execute(sql)
rows = a.fetchall()
tables = []
for row in rows:
tables.append(row.values())
但是当我 运行 print(tables)
时,它给我的结果如下:
["dict_values(['table1'])", "dict_values(['table2'])"]
我唯一需要的列表是 ['table1', 'table2', 'etc', 'etc']
。
我该如何解决这个问题?是 SQL 语句导致了这类问题?
谢谢
row.values()
returns 一个 dict_values 对象,其作用类似于列表。
由于您可以假定该列表中只有一个值,因此您可以替换此行:
tables.append(row.values())
有了这个:
tables += row.values()
你应该会得到预期的结果。
您可以使用此代码,唯一需要记住的是 tables.append(row.values()[0])
语法,因为您使用的是字典
import pymysql.cursors
conn = pymysql.connect(host='myHost', user='user', password='password', db='test', cursorclass=pymysql.cursors.DictCursor)
a = conn.cursor()
sql="SHOW tables"
a.execute(sql)
tables = []
rows = a.fetchall()
for row in rows:
tables.append(list(row.values())[0])