有没有办法通过降序字段中的数字部分来查询查询中的对象?例如我的对象中有一个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
应用一些函数,只是告诉它做数字排序而忽略非数字?
答案 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
,但我不太确定该怎么做...