cursor = connection.cursor().execute(sql)
columns = [column[0] for column in cursor.description]
print(columns)
results = []
for row in cursor.fetchall():
    results.append(dict(zip(columns, row)))
print(results)
Output pyodbc cursor results as python dictionary