首页 > 解决方案 > SQLAlchemy 表创建不区分大小写的列

问题描述

我正在尝试使用不区分大小写的特定列创建一个 SQLAlchemy 表。我已经从SQLAlchemy 中不区分大小写的字符串列中阅读了 Dologan 的解决方案?. 但考虑到版本(我目前的版本是 1.0.11)的更新,我希望可能有一个内置参数来呈现条目不区分大小写。

class Bob(Base, ...):
    __tablename__ = "Alice"
    steve = Column(String, nullable=False, *case-insensitive parameter*?)

标签: pythonsqlalchemy

解决方案


虽然不是直接的答案可能是一种解决方法..(下面允许您写入steve但它保存为_steve格式化为小写)

class Bob(Base, ...):
    __tablename__ = "Alice"
    _steve = Column(String, nullable=False)

    @property . # hybrid_property for search queries?
    def steve(self):
        return self._steve

    @steve.setter
    def steve(self, value):
        self._steve = value.lower()

可以根据小写查询:

Bob.query.filter(Bob._steve == 'SomE TexT'.lower())

这也可能取决于我认为在 SQLalchemy 文档中解释为的其他一些属性hybrid_properties

Bob.query.filter(Bob.steve == 'SomE TexT'.lower())

推荐阅读