早上好,
我正在尝试使用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语句吗?
谢谢
答案 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])