Python SqlAlchemy-like筛选器不区分大小写,但应区分大小写

Python SqlAlchemy-like筛选器不区分大小写,但应区分大小写,python,sqlite,sqlalchemy,case-sensitive,case-insensitive,Python,Sqlite,Sqlalchemy,Case Sensitive,Case Insensitive,我正在为数据库使用SqlAlchemy,但在查询中使用like函数时遇到问题 我的数据库是SQLite 我的要求如下: self.session.query(Value.scan).filter(Value.current_value.like("%" + search + "%"), Value.tag == Tag.tag, Tag.visible == True).distinct().all() 列Value.current_值是一个字符串,您可以在此处看到声明: class Valu

我正在为数据库使用SqlAlchemy,但在查询中使用like函数时遇到问题

我的数据库是SQLite

我的要求如下:

self.session.query(Value.scan).filter(Value.current_value.like("%" + search + "%"), Value.tag == Tag.tag, Tag.visible == True).distinct().all()
列Value.current_值是一个字符串,您可以在此处看到声明:

class Value(Base):
    current_value = Column(String, nullable=False)
搜索变量是来自快速搜索栏的str,区分大小写(我从不在它上面调用lower或upper)

我想进行区分大小写的搜索,但结果不区分大小写

我做了一些研究,比如应该区分大小写,我喜欢不区分大小写,所以我不明白为什么它不区分大小写

我应该为我的专栏选择另一种必须区分大小写的类型吗

另一件奇怪的事情是,当在同一列上使用函数contains(不区分大小写的结果)时,我也遇到了同样的问题,但在使用诸如==,!=,之类的运算符时却没有,(区分大小写的结果)

semeone知道为什么它对运算符区分大小写,但对like和contains函数不区分大小写吗

致意

SQLite中的Lucie默认不区分大小写

我所要做的就是激活

我创建了一个类来激活pragma,如下所示:

class ForeignKeysListener(PoolListener):
    """
    Class to activate the pragma case_sensitive_like, that makes the
    like and contains functions case sensitive
    """
    def connect(self, dbapi_con, con_record):
        db_cursor = dbapi_con.execute('pragma case_sensitive_like=ON')
engine = create_engine(
    'sqlite:///' + os.path.join(self.folder, 'database', 'mia2.db'),
    listeners=[ForeignKeysListener()])
创建引擎时,只需添加如下侦听器:

class ForeignKeysListener(PoolListener):
    """
    Class to activate the pragma case_sensitive_like, that makes the
    like and contains functions case sensitive
    """
    def connect(self, dbapi_con, con_record):
        db_cursor = dbapi_con.execute('pragma case_sensitive_like=ON')
engine = create_engine(
    'sqlite:///' + os.path.join(self.folder, 'database', 'mia2.db'),
    listeners=[ForeignKeysListener()])

您使用的是什么数据库?SQLite,对不起,我忘了精确说明!,在默认情况下,SQLite-LIKE在ASCII范围内不区分大小写。可以使用使其区分大小写。SQLAlchemy只是“%”| | expr | | |“%”.Related等
列的简写,如果不是“谢谢你的回答”的副本的话!作为一个小旁注,有利于。