Jquery. Работа с json-данными. Python - версия

В предыдущем посте - Jquery. Работа с json-данными (клиент-серверное взаимодействие) - было показано клиент-серверное взаимодействие в одном направлении: от сервера к клиенту. На стороне сервера отрабатывал скрипт - json.php, но предположим, что у нас есть Apache, например, который "завязан" на python с cgi интерфейсом. Таким образом, нам нужно переписать скрипт: json.php -> json.py. Итак.

json.py:

#!/usr/bin/env python
import MySQLdb
import json

# Параметры (тестовые), необходимые для коннекта к базе данных db_name
server = "localhost"
username = "root"
password = "password"
# Тестовое имя базы данных
dbname = "db_name"
# sql-запрос. Возвращает данные двух работников из одного отдела
sql = "SELECT DISTINCT a.id, a.date, a.staff, a.otdel \
        FROM db_name.tbl_name a, db_name.tbl_name b \
        WHERE a.otdel = b.otdel AND a.id <> b.id \
        ORDER BY a.otdel ASC \
        LIMIT 2"

# Подключение к серверу и базе данных...
db = MySQLdb.connect(server, username, password, dbname)

# Подготовка курсора...
cursor = db.cursor()

# Выполняем sql-запрос к базе данных...
cursor.execute(sql)

# Извлекаем результат запроса в переменную для дальнейшего разбора
result = cursor.fetchall()

# Отключаемся от сервера...
db.close()

# Создаем пустой список из двух пустых словарей
data = [{}, {}]

for i in range(0, 2):
    data[i]['id'] = result[i][0]
    data[i]['date'] = result[i][1]
    data[i]['staff'] = result[i][2]
    data[i]['otdel'] = result[i][3]
   
print("Content-type: application/json\n")

print(json.dumps(data))


Тут все понятно, два пустых словаря в списке data нужны для записи результатов sql-запроса (две записи). В конечном виде список примет вид:

[{'date': 12032013, 'otdel': 'it', 'id': 16, 'staff': 'developer'}, {'date': 12032013, 'otdel': 'it', 'id': 61, 'staff': 'tester'}] 

Который отправляется в ответ клиенту после обработки методом json.dumps(), в итоге получим:

'[{"date": 12032013, "otdel": "it", "id": 16, "staff": "developer"}, {"date": 12032013, "otdel": "it", "id": 61, "staff": "tester"}]'

Исходник - download.