Список сортировки для отображения с 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. Если у кого-то есть другие предложения, я всегда открыт для оптимизации