Python - 从Dictionary列表中提取值(由SQL命令生成)

时间:2016-11-02 13:24:52

标签: python mysql list dictionary

早上好,

我正在尝试使用Python中的MySQL数据库,我需要提取一些数据,如表名。

所以我运行这段代码:

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语句吗?

谢谢

2 个答案:

答案 0 :(得分:2)

row.values()返回一个dict_values对象,其作用类似于列表。

由于您可以假设该列表中只有一个值,您可以替换此行:

tables.append(row.values())

有了这个:

tables += row.values()

你应该得到预期的结果。

答案 1 :(得分:1)

您可以使用此代码,唯一需要注意的是此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])