Я только что подумал о другом решении, но я не знаю, с какими недостатками это может произойти.
Сохраните заказ в виде списка идентификаторов (т.е. 1, 2, 3, 4, 5 ) в отдельную таблицу вместе с идентификатором списка.
(Pages Table)
ID, page, listID
1, a, 1
2, b, 1
3, c, 1
4, d, 1
5, e, 1
(Lists Table)
ListID, list_sequence
1, (1,2,3,4,5)
Каждый раз, когда меняется заказ, сохраняйте новый заказ в таблице списков. При извлечении данных для отображения сначала извлеките list_sequence из таблицы списков, затем выполните что-то вроде
for id in list_sequence:
Pages.query.get(id)
// display the row
Таким образом, строки будут извлекаться последовательно в соответствии с указанным порядком. Каждая перестановка будет записывать в базу данных только один раз.
Пожалуйста, дайте мне знать, если есть веская причина не использовать этот метод!
Редактировать: столбец list_sequence будет сохранен как строка.
Редактировать 2: Это добавит еще одну операцию для каждой вставки. Новая строка должна быть вставлена, а затем также должна быть обновлена list_sequence. Будет ли это очень существенной разницей в скорости?