Python SQLalchemy order_by 1.9 и 1.10 в правильном порядке? - PullRequest
2 голосов
/ 11 марта 2020

У меня есть таблица со столбцом version_number тип TEXT.

Значения выглядят так: 1.9 или 1.3 и теперь 1.10

Проблема в том, что если я сделаю .order_by(desc("version_number")) результат упорядочится так:

1.9
1.3
1.10 # this is handled like 1.1

Мне нужно:

1.10
1.9
1.3

В настоящее время я не знаю, что делать. Я не хочу менять тип столбца и даже не знаю, поможет ли это. Я также хочу сохранить хорошую производительность, так как у меня есть 1 тыс. Строк ~ для каждого запроса c, который необходимо заказать.

Есть идеи?

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

.order_by(desc(func.string_to_array(BuildItems.version_number, '.'))

Не работает. 1.10 все еще внизу

1 Ответ

0 голосов
/ 12 марта 2020

Вам необходимо преобразовать массив text в массив integer

from sqlalchemy import Integer, cast 
from sqlalchemy.dialects.postgresql import ARRAY

.order_by(desc(cast(func.string_to_array(BuildItems.version_number, '.'), ARRAY(Integer))))
...