Список сортировки для отображения с Python или JQuery для вишневой страницы

У меня есть проект cherrypy, у которого есть веб-страница для отображения результатов запроса к базе данных в виде списка всех строк, иногда более 10000 строк. Запрос к базе данных возвращает список, в котором каждый элемент списка является кортежем всех столбцов запроса. Я хотел установить порядок сортировки по умолчанию, чтобы сделать добавленную пагинацию более удобной. Но, поскольку я протестировал добавление сортировки с помощью python и jquery, я обнаружил ограничения обоих, в которых я не уверен, если я просто не знаю, как их преодолеть, или мне просто нужно использовать другой метод.

В моем методе python я использую функцию sorted() и оператор itemgetter, но я нахожу, что со смесью букв различного регистра и цифр в столбце, используемом для сортировки, используется ASCIIbetical порядок [0, 10, 2, 20, A, C, Z, a, z]. Этот порядок сортировки не идеален, но я пока не смог найти способ манипулировать сортировкой другого типа. Ниже приведен пример кода, который я бы использовал для сортировки.

from operator import itemgetter
random_list = [('a', 'value'), ('b', 'value'), ('0', 'value'), ('8', 'value'), ('Z', 'value'), ('2', 'value'), ('A', 'value'), ('z', 'value'), ('100', 'value'), ('250', 'value'), ('20', 'value'), ('25', 'value'), ('10', 'value'), ('11', 'value'), ('c', 'value')]
sorted_results = sorted(random_list,key=itemgetter(0))
print sorted_results
[('0', 'value'), ('10', 'value'), ('100', 'value'), ('11', 'value'), ('2', 'value'), ('20', 'value'), ('25', 'value'), ('250', 'value'), ('8', 'value'), ('A', 'value'), ('Z', 'value'), ('a', 'value'), ('b', 'value'), ('c', 'value'), ('z', 'value')]

Этот метод в настоящее время занимает около 6-7 секунд меньше для полной загрузки страницы, чем метод jquery, который я опишу ниже.

Для сортировки jquery я пробовал jquery плагин TableSorter. Я включил файл jquery.tablesorter.js в свой проект и дал ссылку на него на своей странице. Этот метод возвращает алфавитный порядок, и вместо этого я вижу порядок списков, такой как [0, A, C, Z, a, z, 2, 10, 20], который намного лучше, чем ASCIIbetical из моего метода python. Этот метод jquery требует гораздо больше времени для сортировки результатов и получения полностью загруженной / функциональной страницы.

Ниже приведен фрагмент кода jquery, связанный с моей HTML-страницей с таблицей, с которой нужно отсортировать id="data-table"

$( document ).ready(function() {
    $("#data-table")
    .tablesorter({sortList: [[1,0],[0,0]]});
} 

Есть ли способ манипулировать более быстрым методом python вместо того, чтобы сортировать, как я хотел бы, или есть методы, которые я должен изучить для оптимизации работы jquery?

РЕДАКТИРОВАТЬ

В комментариях randomir указал мне на модуль natsort для python, и это, похоже, именно тот тип сортировки, который я искал, который быстрее, чем мой метод jquery. Если у кого-то есть другие предложения, я всегда открыт для оптимизации

0 ответов

Другие вопросы по тегам