python - SQLalchemy 不区分大小写的排序顺序

标签 python sqlite sqlalchemy

您好,我正在尝试使用 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/

相关文章:

sqlite - 系统崩溃时如何在WAL模式下恢复Sqlite3

python - SQLAlchemy Harvesine 大圆计算错误

python - 使用 pandas json_normalize 展平 JSON 数据

entity-framework - VS2017 中的 SQLite 提供程序

python - OpenCV中这个 'inverse map'函数有什么不准确之处?

sqlite - 多次关闭SQLite数据库是否安全?

python - 计算多对多关系中的行数 (SQLAlchemy)

python - 使用 sqlalchemy create_engine 配置查询/命令超时?

python - 3D 卷积自动编码器的输出层与输入层不匹配

python - 使用 Salt 的 virtualenv.managed 或 pip.installed 设置 python 虚拟环境?