使SQLalchemy将字符串存储为小写的正确方法是什么?

2024-04-26 08:00:39 发布

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

我正在使用SQLAlchemy与我的数据库对话。因为很少有人会使用我的应用程序(至少最初是这样),我认为SQLite是最快/最简单的后端。在

我有一个User,它有一个基于字符串的惟一ID,例如asdf@asdf.com,或者{}。我不在乎id是什么格式-只是它是唯一的。但是,我希望这是一个不区分大小写的唯一性。所以Mr. Fnord和{}是等价的。在

显然,您可以在模式上使用COLLATE设置,但是(至少在sqlite中)它似乎没有向前移动。我的解决方案是使用类上的属性在所有内容进入表之前将其小写,但这似乎很脆弱/粗糙。在

属性是处理小写的最好方法吗,还是有更好的方法通过SQLAlchemy/SQLite使事物不区分大小写?在


Tags: 方法字符串comid数据库应用程序sqlite属性
1条回答
网友
1楼 · 发布于 2024-04-26 08:00:39

我没有亲自尝试过,但也许您可以使用custom comparator operator?一、 e

class CaseInsensitiveColumnComparator(ColumnProperty.Comparator):
    def __eq__(self, other):
        return func.lower(self.__clause_element__()) == func.lower(other)

这样,您的ID可以存储在任何情况下,但会比较为小写。在


另一个想法-augmentsqlalchemy.types.Text,并将其用作您的ID

^{pr2}$

相关问题 更多 >