p不区分大小写排序

2024-04-19 12:39:56 发布

您现在位置:Python中文网/ 问答频道 /正文

以下排序区分大小写:

MyModel.select().order_by(MyModel.name)
<class '__main__.MyModel'> SELECT t1."id", t1."name" FROM "mymodel" AS t1 ORDER BY t1."name" []

如何添加NOCASE使其不区分大小写?在

或者有没有其他方法使它不区分大小写?在

我在documentation上找不到关于它的任何信息。在


Tags: namefromidby排序mainasorder
1条回答
网友
1楼 · 发布于 2024-04-19 12:39:56

您可以使用SQL函数(带^{} helper)将模型名称小写:

MyModel.select().order_by(fn.Lower(MyModel.name)) 

对于SQLite,您还应该能够使用custom collation

^{pr2}$

^{} subclass提供的@db.collation()修饰符允许您注册自定义排序规则函数,然后使用该函数进行排序:

MyModel.select().order_by(collate_case_insensitive.collation(MyModel.name))

当然,SQLite已经有一个内置的^{} collation,应该在这里使用它,但是要在上面使用它,必须构建一个^{} object来包含原始SQL:

MyModel.select().order_by(Clause(MyModel.name, SQL('collate NOCASE')))

这反映了SQLAlchemy中不区分大小写的排序方式:SQL alchemy case insensitive sort order

相关问题 更多 >