繁体   English   中英

Python SQLalchemy order_by 1.9 和 1.10 的顺序是否正确?

[英]Python SQLalchemy order_by 1.9 and 1.10 in correct order?

我有一个列version_number类型TEXT的表。

值如下所示: 1.91.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

目前我不知道该怎么办。 我不想更改列类型,甚至不知道它是否有帮助。 我也想保持良好的性能,因为我有 1k 行~用于 eahc 请求,必须订购。

有任何想法吗?

编辑

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

不起作用。 1.10还在底部

您需要将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))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM