cursor
objekt má .description
atribut, který vám říká názvy jednotlivých sloupců, použijte jej k přeměně řádku na diktát:
cursor.execute("""
SELECT id, name
FROM school_subjects
""")
columns = [desc[0] for desc in cursor.description]
result = []
for row in rows:
row = dict(zip(columns, row))
result.append(row)
Podrobnosti o .description
atribut, viz specifikace Python DB API 2.0
.