在Python中从MySQL表生成列名

时间:2013-11-25 10:35:17

标签: python json

有什么方法可以从我的SQL select结果中获取列名? 这是我的小测试代码,我想要的是从结果中生成一个示例JSON:

import MySQLdb
...
....

cursor.execute('SELECT * from table')
rows = cursor.fetchall()
column = [t[0] for t in cursor.description]

for row in rows:
    myjson = {"id": row[column['id']], "name": row[column['name']], "age": row[column['age']]}
    myresult = json.dumps(myjson, indent=4)
    return myresult

但我得到TypeError: tuple indices must be integers, not str 如果我在表中添加或删除列,我不想使用像row[2]这样的索引,它不会影响结果。我希望能够引用列名。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以通过cursor.description访问列名,这是元组的元组。通过访问每个元素的第一个元素,您将获得列名称。

column_names = [t[0] for t in cursor.description]

这意味着您可以使用列名称创建一个dict - >索引映射至少可以让你写出类似

的东西
for row in rows:
    myjson = {"id": row[columns['id']], "name": row[columns['name']], "age": row[columns['age']]}
    myresult = json.dumps(myjson, indent=4)
    return myresult