[英]Python SQLalchemy order_by 1.9 and 1.10 in correct order?
我有一个列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
目前我不知道该怎么办。 我不想更改列类型,甚至不知道它是否有帮助。 我也想保持良好的性能,因为我有 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.