bin*_*hex 8 python sqlite sqlalchemy
嗨我试图使用sql炼金术在sqlite数据库中为特定列实现升序排序,我遇到的问题是我要排序的列有大小写数据,因此排序顺序无法正常工作.
然后我发现了关于func.lower并尝试将其合并到查询中,但它或者错误或者只是不起作用,有人能给我一个如何使用sql炼金术做一个不区分大小写的升序排序的工作示例.
以下是我到目前为止(抛出错误): -
session.query(ResultsDBHistory).order_by(func.lower(asc(history_sort_order_column))).all()
Run Code Online (Sandbox Code Playgroud)
python 2.6.6 sql alchemy 0.7.10
Mar*_*ers 16
您需要反转函数的顺序:
session.query(ResultsDBHistory).order_by(asc(func.lower(history_sort_order_column))).all()
Run Code Online (Sandbox Code Playgroud)
首先降低,然后声明升序.
或者,将排序规则更改为NOCASE
:
from sqlalchemy.sql import collate
session.query(ResultsDBHistory).order_by(asc(collate(history_sort_order_column, 'NOCASE'))).all()
Run Code Online (Sandbox Code Playgroud)
无论如何,这可能是一个更好的主意.
我不认为这ASC
是必需的,只需稍微简化您的代码:
from sqlalchemy.sql import collate
session.query(ResultsDBHistory).order_by(collate(history_sort_order_column, 'NOCASE')).all()
Run Code Online (Sandbox Code Playgroud)