您好,我正在尝试使用 sql alchemy 为 sqlite 数据库中的特定列实现升序排序,我遇到的问题是我要排序的列具有大写和小写数据,因此排序顺序没有正常工作。
然后我发现了 func.lower 并尝试将其合并到查询中,但它要么出错要么就是不起作用,有人可以给我一个工作示例,说明如何使用 sql alchemy 进行不区分大小写的升序排序.
下面是我目前所拥有的(抛出错误):-
session.query(ResultsDBHistory).order_by(func.lower(asc(history_sort_order_column))).all()
python 2.6.6 SQL 炼金术 0.7.10
最佳答案
您需要反转函数的顺序:
session.query(ResultsDBHistory).order_by(asc(func.lower(history_sort_order_column))).all()
因此先降低,然后声明升序。
或者,将排序规则更改为 NOCASE
:
from sqlalchemy.sql import collate
session.query(ResultsDBHistory).order_by(asc(collate(history_sort_order_column, 'NOCASE'))).all()
无论如何,这可以说是一个更好的主意。
我认为 ASC
是必需的,将其关闭会稍微简化您的代码:
from sqlalchemy.sql import collate
session.query(ResultsDBHistory).order_by(collate(history_sort_order_column, 'NOCASE')).all()
关于python - SQLalchemy 不区分大小写的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17567201/