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

San*_*ram 3 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()
Run Code Online (Sandbox Code Playgroud)

有什么办法叫order_by了一次,并且使用排序顺序在规定order_type来决定是否排序作为一个变量ascdesc

Mar*_*ers 6

ascdesc只是对象,挑根据您要订购一个:

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

result = session.\
         query(Customer).\
         order_by(direction(getattr(Customer, sorting_column_name))).\
         all()
Run Code Online (Sandbox Code Playgroud)

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