如何在sqlalchemy中的变量中提供排序顺序?

时间:2014-07-28 09:43:16

标签: python sqlalchemy sql-order-by

现在我正在做的是:

if order_type == 'desc':
    result = session.\
             query(Customer).\
             order_by(desc(getattr(Customer, sorting_column_name))).\
             all()
else:
    result = session.\
             query(Customer).\
             order_by(asc(getattr(Customer, sorting_column_name))).\
             all()

有没有办法只调用order_by一次,并使用order_type中提供的排序顺序作为变量来决定是否对ascdesc进行排序?

1 个答案:

答案 0 :(得分:4)

ascdesc只是对象,根据您想要的顺序选择一个:

direction = desc if order_type == 'desc' else asc

result = session.\
         query(Customer).\
         order_by(direction(getattr(Customer, sorting_column_name))).\
         all()

direction绑定到ascdesc,具体取决于order_type的值,然后用于构建查询。