按字段数字部分按降序排列sqlalchemy查询对象

时间:2015-07-22 20:20:38

标签: python-2.7 sqlalchemy

有没有办法通过降序字段中的数字部分来查询查询中的对象?例如我的对象中有一个tag字段:

shape1
shape2
shape13
shape15
shape9

我想订购,所以它会给我

shape15
shape13
shape9
shape2
shape1

这可能吗?这就是我目前正在做的事情

db_objects = session.query(DatabasePolygon).order_by(desc(DatabasePolygon.tag))

问题在于,这将根据字符串排序对它们进行排序,因此技术上9在此方法中超过13。可以对order_by应用一些函数,只是告诉它做数字排序而忽略非数字?

1 个答案:

答案 0 :(得分:1)

你应该可以这样做:

from sqlalchemy import func, NUMERIC
db_objects = session.query(DatabasePolygon)\
    .order_by(func.cast(func.replace(DatabasePolygon.tag, 'shape', ''), 
                        NUMERIC).desc()).all()

您可能真的想将其投放为SIGNED,但我不太确定该怎么做...

相关问题