Я новичок в этом форуме, прошу прощения, если формат вопроса не очень хороший.
Я пытаюсь получить строки из таблицы базы данных в mysql и вывести их после обработки столбцов. (один из столбцов содержит json, который необходимо расширить). Ниже приведен источник и ожидаемый результат. Было бы замечательно, если бы кто-то мог предложить более простой способ управления этими данными.
Примечание: я достиг этого с большим количеством циклов и разборов, но проблемы заключаются.
1) Нет никакой связи между col_names и данные и, следовательно, когда я печатаю данные, я не знаю порядок данных в наборе результатов, поэтому существует несоответствие в заголовке столбца, который я печатаю, и данных, любые средства, чтобы сохранить это в синхронизации c?
2) Я хотел бы иметь возможность изменять порядок столбцов без особых переделок.
Какой наилучший из возможных способов добиться этого. Не изучал библиотеку pandas, поскольку я не был уверен, действительно ли это необходимо.
Использование python 3.6
Образец данных в таблице
id, student_name, personal_details, university
1, Sam, {"age":"25","DOL":"2015","Address":{"country":"Poland","city":"Warsaw"},"DegreeStatus":"Granted"},UAW
2, Michael, {"age":"24","DOL":"2016","Address":{"country":"Poland","city":"Toruń"},"DegreeStatus":"Granted"},NCU
Я запрашиваю базу данных, используя объект MySQLdb.connect, шаги ниже
query = "select * from student_details"
cur.execute(query)
res = cur.fetchall() # get a collection of tuples
db_fields = [z[0] for z in cur.description] # generate list of col_names
Данные в переменных:
>>>db_fields
['id', 'student_name', 'personal_details', 'university']
>>>res
((1, 'Sam', '{"age":"25","DOL":"2015","Address":{"country":"Poland","city":"Warsaw"},"DegreeStatus":"Granted"}','UAW'),
(2, 'Michael', '{"age":"24","DOL":"2016","Address":{"country":"Poland","city":"Toruń"},"DegreeStatus":"Granted"}','NCU'))
Желаемый вывод:
id, student_name, age, DOL, country, city, DegreeStatus, University
1, 'Sam', 25, 2015, 'Poland', 'Warsaw', 'Granted', 'UAW'
2, 'Michael', 24, 2016, 'Poland', 'Toruń', 'Granted', 'NCU'