Генерировать имена столбцов из таблицы MySQL в Python

Есть ли способ получить имена столбцов из моего результата выбора SQL? Вот мой маленький тестовый код, и все, что я хочу, это сгенерировать образец 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 ответ

Вы можете получить доступ к именам столбцов с помощью 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

licensed under cc by-sa 3.0 with attribution.