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

标签 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?

最佳答案

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

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

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

direction 根据 order_type 的值绑定(bind)到 ascdesc,然后用于构建查询。

关于python - 如何在 sqlalchemy 中的变量中提供排序顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24992485/

相关文章:

python - 计算嵌套列表中的整数

python - 如何重现由 sqlalchemy session 缓存引起的错误

postgresql - 按列名排序

python - 带有 Tensorflow 的 CNN,CIFAR-10 的准确率低且没有改进

python - Numpy 尽可能将字符串转换为 float

python - Pyramid 、sqlalchemy dbsession

python - pandas to_sql sqlalchemy 与 secure_transport 的连接

mysql - 通过不给出正确的输出作为减号 (-) 大于加号 (+) 的 ascii 值来排序

.net - Linq:如何通过一个表的SUM和另一个表的COUNT进行排序

python - 按空格将字符串拆分为 N 个元素,保留带引号的子字符串